# Overview

## Overview

Sunbird Knowlg (*pronounced as the word "knowledge"*) consists of a set of tools and services that enable you to organise, curate, create, and discover millions of assets.

For example, organizations across multiple domains such as e-Commerce, OTT, Education etc can leverage Sunbird Knowlg building block to organise their content and knowledge assets as per their domain, create targeted collections, courses, programs, projects, video repository, etc.

## Key capabilities of Sunbird Knowlg

**Rich and Diverse Assets** - Enable a variety of learning experiences such as simulations, explanation, e-books, games, virtual labs, AR/VR experiences using multiple formats - html, videos, h5p, pdf, audios and ePub.

**Organised Collections** - Organise your assets into various categories such as playlists, courses, textbooks, web-series, episodes etc.

**Asset Lifecycle Management** - Microservices to manage the asset creation, curation and publish lifecycle.

**Powerful Discovery** - Enable meaningful tagging & discovery of assets with comprehensive search capability by defining your own taxonomies. These services are built for scale and enable various kinds of searches irrespective of their data type.

**Phygital Discovery** - Ability to codify and link physical resources such as textbooks with online resources using QR codes.

**Observability** - Out of the box dataproducts to analyse the health of the asset creation workflows. Create custom reports and dashboard to derive usage related insights by leveraging the telemetry generated by the players and editors.

### Adopters:

* **DIKSHA by NCERT***,* **Ministry of Education, India**
* **Lex by Infosys**
* **Contributors**

Ekstep


# Capabilities


# Rich and Diverse Assets

### Assets

This is the master definition for types of items that are supported on Sunbird.\
Example from education - ***Question set*** is an asset\
Analogous example from the real-world - A ***foot wear*** is an asset

An asset is the core system entity through which any type of asset is managed. Services such as creation, modification, publishing, discovery, consumption - are built around the core assets.

Knowlg provides a generalized and externalized asset model as shown in the below diagram.

![Generalized and Externalized Asset Model](/files/w9NheCsVmTNLlmDORugy)

### **Key Capabilities of Sunbird Assets:**

* **Enables you to define your own domain specific assets and their properties using configurable and extensible attributes.**

Below assets are currently defined in Sunbird. You can define new assets basis your needs.

a) Content - This asset allows you to create a variety of content enabling you to deliver rich learning experiences.

b) Collections - click [here](/learn/capabilities/organised-collections) to know more about this asset type

c) Question(s) - click [here](https://inquiry.sunbird.org/) to know more about this asset type

d) Question Set - click [here](https://inquiry.sunbird.org/) to know more about this asset type

e) Media Resources - This asset type comprises of lowest level of reusable assets such as images, video, audio files etc

![](/files/VmNR9pOxxckorgd3Y1jF)

* **Enables creation of categories to cater to domain specific solutions through configuration without any code changes.**

Unlike an **Asset**, which is a core entity of the system, a category is just a “label” tagged to an object and can defined a specific set of properties and behaviors - which are a subset of those supported by the asset.

Hence, categories are completely driven by configuration, without any category specific logic implemented in the code.

Example from education - ***Exam Question paper, Practice Worksheet, Quiz*** each one is a category of the asset type **Question set.**\
Analogous example from the real-world - A ***Shoe, Sandal, Flip-flops*** each one is a category of the asset type **foot wear.**

![](/files/TGa5pCh5VIgmjJA5ULzi)

* **Provides rich and customizable tagging frameworks to efficiently organize your assets and help users discover relevant assets.**

![Example - Asset tagging frameworks in the Education Domain](/files/UbLRgde1CqPgJa6SztCO)

* **Provides tools such as editors and players to create and consume these assets.**

![Editors & Players](/files/AeehtQTc8lcIWWAxeuxj)


# Organised Collections

### Collections

Collections are a multi-level hierarchical set of assets -content, question sets or even other collections.

The key capabilities of Collections are:

* Ability to create various categories of collections as per your solution or specific to your domain needs.

![](/files/y6juWIsVcmpBSwJtoiT3)

* Provides you the ability to organize your assets in a multi-level hierarchy. Each level of hierarchy can have one or more folders to group the assets.

![](/files/ksRzqUotE1sOoC437F3q)

* Ability to link one or more assets (of any type defined in the asset model) under a given folder. The type of assets that can be linked at a given level is configuration driven.

![](/files/Xh0OuLQsmRiQdK9zY3U9)

* Ability to tag metadata at all levels to ensure efficient organization of collections and to facilitate ease of discovery:

a) The collection (root) level

b) Folder level and

c) As part of asset to collection relation

Note: the list of metadata attributes at all these levels is configuration driven.

![](/files/W5yqUdcNJhu0dG0LHh4z)

* Ability for 'Deep copy' & 'Shallow copy' of collections.

*A “deep” copy of a collection copies the complete hierarchy and the asset links, the assets themselves are not copied***.**

*A “shallow” copy of a collection just copies the root and points to the same hierarchy of original collection.*

![](/files/28NdXM6ieX4PJzqzovi9)

* Ability to create and edit collections using the **'Collection editor'** tool.

![](https://lh6.googleusercontent.com/7wDW9vjirHry1KZFV2necvZtXTH-eogpts8uMqKNv16nxVbO6m9urshvD9v71HZM7pRtySPAuzShUesALXaIS7Wq4SRNA1LNelyNeA6fS7yrsmICFlbmOGLw4FSb07t2ohj46bbXwxY)

* Ability to link DIAL codes to a collection to power phygital discovery of collections.

![](/files/szs0BLZWlpOtFdifowy0)


# Asset Lifecycle Management

Sunbird Knowlg provides microservices to manage the complete '**End to end publishing**' lifecycle of assets with in-built curation workflows.

![Sunbird Asset Lifecycle](/files/DhwFNS4qWD0RBFfmSLAk)

### Key Capabilities

* Review workflow to accept, reject or request changes to an asset
* Asset packaging to enable online streaming + offline consumption
* Asset versioning for subsequent updates after publish


# Powerful Discovery

Sunbird Knowlg provides tagging capabilities and out of the box search services which allows for asset search and discovery.

**Key Capabilities:**

* Enables multiple modes of content discovery and access
* Driven by rich metadata tagging and search API
* APIs can be extended to enable new modes of discovery

![](/files/Kv3A4pvyLj0PE831HgN1)


# Phygital Discovery

Phygital bridges the gap between the physical and digital world. The objective is to bring the best of the physical experience into the digital realm and vice versa. Sunbird Knowlg uses the [DIAL spec](https://github.com/sunbird-specs/DIAL-specs/blob/main/README.md) to power the phygital discovery of assets. This capability is already massively used across India with billions of DIAL QR codes already in circulation.

**Key Capabilities:**

1. Flexible codification for easy printing by publishers
2. Ability to use an online code/ID registry with resource descriptor metadata
3. Ability to codify any physical learning resource
4. Ability for any app to scan, obtain metadata, and provide personalized learning experience to users

More details can be found in the below video:

{% embed url="<https://www.youtube.com/watch?t=612s&v=EtYU11qNciQ>" %}


# Observability

Every single user interaction is instrumented as per the Sunbird telemetry spec. Therefore, allowing you to use this granular data to create custom reports to turn user actions into insights. Here are the events specific to Knowlg:

Click [here](https://github.com/sunbird-specs/Telemetry/blob/3.3.0/specification.md) to know more about Sunbird telemetry spec.


# Technical Architecture

### Component view

The diagram provided illustrates the various components comprising the Knowlg Building Block.

<figure><img src="/files/lFFXgEv6PPIjOTmnddSF" alt=""><figcaption><p>Component View</p></figcaption></figure>

### Deployment View

<figure><img src="/files/TlWbMj6Ogz60lekAWT2x" alt=""><figcaption><p>Deployemnt View</p></figcaption></figure>

The diagram above depicts the components that are part of the Knowlg Building Block and illustrates how they are deployed within the system.

* **Neo4j** functions as the primary data store for the content-service. Within this Neo4j database, the data of each asset is stored as a graph node, allowing for efficient and interconnected data representation.
* The asset data is primarily stored in Neo4J. However, due to the large size of external or additional data associated with the asset, such as the body of the asset, collection hierarchy, and other extensive information, this data is stored separately in **Cassandra**. By utilizing Cassandra to store this large-size data, the system can efficiently manage and retrieve asset-related information without overwhelming the Neo4J database. This approach ensures a scalable and optimized storage solution for assets, allowing Neo4J to focus on managing the core relationships and structure of the asset data, while Cassandra handles the storage of extensive asset-related information.
* To enhance the API's performance and reduce the need for frequent database queries during Read calls, we have implemented **Redis** as a temporary cache. Redis serves as an in-memory data store that holds frequently accessed data. When a Read call is made to the API, the data is first checked in the Redis cache. If the data is found in Redis, the API can retrieve it directly from memory, avoiding the need to hit the database. This caching strategy significantly improves response times and reduces the load on the database, resulting in a more efficient and responsive API. Additionally, by using Redis as a cache, we can ensure that frequently requested data is readily available, further optimizing the overall performance of the API.
* By leveraging **Flink** (Async Jobs), we enable real-time and batch data processing with low latency, high throughput, and fault tolerance.


# Product & Developer Guide

## Feature specific components

In this page, we map the [capabilities](/learn/capabilities) offered by Knowlg to the various components in the Sunbird Knowlg building block. This view provides you understanding of what components are needed to enable a specific capability.&#x20;

* [Rich & Diverse Assets](#rich-and-diverse-assets)
* [Organized Collections](#organized-collections)
* [Asset Lifecycle Management](#asset-lifecycle-management)
* [Powerful Discovery](/learn/capabilities/powerful-discovery)
* [Phygital Discovery](#phygital-discovery)
* [Observability](#observability)

### Rich & Diverse Assets

| Component                                                             | Description                           |
| --------------------------------------------------------------------- | ------------------------------------- |
| [Content service](/learn/product-and-developer-guide/content-service) | Enables users to define asset schema. |

### Organized Collections

| Component                                                                                       | Description                                                                                                                                                                 |
| ----------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [Content-service](/learn/product-and-developer-guide/content-service)                           | Enables users to define asset schema and consists of APIs to organize the assets as a collection.                                                                           |
| [Creation - Collection editor](/learn/product-and-developer-guide/editors/collection-editor-v2) | It is a pluggable tool used to create the collections.                                                                                                                      |
| <mark style="color:red;">Consumption - no player</mark>                                         | There is no separate collection player however the assets linked to the collection can be played using the [content-players V1](broken://pages/QXRd116ivyFZ1Gn1ozXk) or V2. |

### Asset Lifecycle Management

###

| Component                                                                                  | Description                                                                                                                                                                                                                           |
| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [Content service](/learn/product-and-developer-guide/content-service)                      | <p>Content service API's helps to curate the assets created by creators(using asset creation tools - <a href="/pages/pVuNgDsZuivG9En1wUnN">editors</a>).<br><br>The lifecycle to curate the content<br>Draft -> Review -> Publish</p> |
| [Creation - Interactive editor](/learn/product-and-developer-guide/editors/editor)         | This tool helps user/creators to create the assets(ECML format).                                                                                                                                                                      |
| [Creation - File upload editor](/learn/product-and-developer-guide/editors/generic-editor) | Upload editor tool allows creators to create assets by a simple upload. Supports Video, PDF, HTML, H5P & EPUB format.                                                                                                                 |
| [Consumption - Content player V1](broken://pages/QXRd116ivyFZ1Gn1ozXk)                     | Content player V1 enables users to consume content. This player is compatible with all asset format supported by sunbird platform.                                                                                                    |
| Consumption - Content player's V2                                                          | This is enhanced or un-bundled version of content-player-V1. Unbundled to be lighter & specific to the format. For ex., video player to play video content, epub player to play epub content etc.                                     |

### Powerful Discovery

| Component                                                                          | Description                                                                                                                                                       |
| ---------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [seach service](/learn/product-and-developer-guide/assets-search-service)          | This is a service offered for ease of discovery of assets. This service will expose the API's only to read & filter the assets.                                   |
| [Taxonomy service](/learn/product-and-developer-guide/taxonomy-and-tagging)        | This service helps to define your own framework to organize the assets in a specific structure. It also enables you to define the categories & tagging of assets. |
| Dependency - [Content-service](/learn/product-and-developer-guide/content-service) | The data in the content-service will be synced to the asset-search service for ease of discovery.                                                                 |

### Phygital Discovery

| Component    | Description                                                                                                                                                                               |
| ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Dial service | This service offers to generate the DIAL code & it can be linked to any asset. It also offers physical/digital discovery of the asset using a QR code image generated for each DIAL code. |

### Observability

| Component | Description                                                                                                                                                                                                        |
| --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Telemetry | All the services & tools of the Sunbird Knowlg generate wide list of telemetry events. These telemetry events help to analyze the user actions. Users can build their own reports as per their needs/requirements. |


# Content Service

The Content service uses the Graph engine to communicate with Neo4j. The Graph engine expects schema definitions for each object type. It validates the data object with the object definition during various CRUD operations.

Below are the details of the other services that are included in the package along with content-service

{% content-ref url="/pages/dIP0JimPOU7lBPSSYXO6" %}
[Collection APIs](/learn/product-and-developer-guide/content-service/content-service-1)
{% endcontent-ref %}

{% content-ref url="/pages/KB6eUYGkKp02jcC1h3i4" %}
[Media APIs](/learn/product-and-developer-guide/content-service/content-service-2)
{% endcontent-ref %}

{% content-ref url="/pages/CIli54TKFD1LSCXEfCSw" %}
[Channel APIs](/learn/product-and-developer-guide/content-service/channel-service)
{% endcontent-ref %}

{% content-ref url="/pages/JXX0NtvBhCsuTHb9YcJM" %}
[License APIs](/learn/product-and-developer-guide/content-service/license-service)
{% endcontent-ref %}

{% hint style="info" %}
As part of the product roadmap, the Collection, Media, Channel, and License APIs mentioned above will be moving out from the content-service.
{% endhint %}


# Content APIs

The Content APIs serve as the core of SB-Knowlg. Within this service, all APIs related to assets and their life-cycle are integrated. This means that the Content APIs handle various functionalities, including the creation, retrieval, updating, and management of assets throughout their life-cycle within the SB-Knowlg platform. By consolidating all asset-related operations in this service, it ensures a centralized and cohesive approach to managing content, enabling efficient and consistent asset management across the platform.

### :stars: Installation guide

{% content-ref url="/pages/xDsFM70LDqf6jsNfCRIe" %}
[Content Service](/use/installation-guide/services/asset-management-service)
{% endcontent-ref %}

### Additional Information

For further explanation of objects and categories can be found in the following videos:

[Understanding Content Architecture of Sunbird](https://www.youtube.com/watch?v=WxZXaTnj2D0\&t=7s)

[Understand Collection Architecture : Enabling Organised and Contextual Experience](https://www.youtube.com/watch?v=n9H87z0-7eU\&t=1709s)


# Features

Content service is a micro-service which provides APIs to manage the lifecycle and workflows of creation and consumption of content.

Content service is a micro-service which provides APIs to manage the lifecycle and workflows of creation and consumption of content.

### **Offline Play**

Enables offline consumption via generation of ECAR files in the packaging stage of the publish lifecycle. Contents can be download from ***downloadUrl***. Two ***variants*** of the ECAR are available for each content. i.e. FULL and SPINE. ECAR can be downloaded and extracted in client (mobile and desktop) to play offline.

### Controlled Publishing

Content publishing can be done in two ways: Public (status: Live) and Private (status: Unlisted). When the content status is ***Live**,* content is available for consumption publicly. When the content status is ***Unlisted**,* content can be accessed only by direct content link (deep link).

### ECAR generation

ECAR is an archive file which contains metadata and artifact related to content. After generating the ECAR file, it's uploaded to the cloud and tagged the ***downloadUrl*** with the cloud path. ECAR generates the different variants - FULL, SPINE and ONLINE. All the variants URL are tagged in ***variants*** attribute.

* FULL - It contains metadata and all the artifacts.
* SPINE - It contains metadata and app icons.
* ONLINE - It contains only metadata.

```
"downloadUrl": "<full ecar url>",
"variants": {
    "full": {
        "ecarUrl": "<full ecar url>",
        "size": "<size in byte>"
    },
    "spine": {
        "ecarUrl": "<spine ecar url>",
        "size": "<size in byte>"
    },
    "online": {
        "ecarUrl": "<online ecar url>",
        "size": "<size in byte>"
    }
}
```

### **Video Streaming**

***streamingUrl*** attribute captures the link of video streaming. For more details, refer to the job [here](/learn/product-and-developer-guide/knowlg-jobs).&#x20;

### **Source file storage**

Source file of the uploaded content is stored in cloud. Source file URL is captured in ***artifactUrl*** attribute.

### **Content lifecycle management**

Content can have the following status throughout the lifecycle:

```
Create (status: Draft)
Update (status: Draft)
Review (status: Review)
Reject (status: Draft)
Publish (status: Live/Unlisted)
Retired (status: Retired)
Failed (status: Failed)
```

Content having the status Retired can't be discovered for consumption/adoption.<br>

![](/files/SxMcmpGjut5qnYiRweNX)

### **Player compatibility**

Player compatibility level of a content is stored in ***compatibilityLevel*** attribute. Based on the value, players can decide to play the content or show the incompatibility message.

### **Version control**

Whenever publish the content ***pkgVersion*** bumpup by +1. Platform always maintains the latest version (Live and Draft) of the content. Old version of the content won't be available.

### **Extracting ECAR**

Extracting ECAR based on contentEncoding and contentDisposition.<br>

| contentEncoding | contentDisposition | Behaviour                                            |
| :-------------: | :----------------: | ---------------------------------------------------- |
|       gzip      |       inline       | Content artifact with zip file. e.g. ecml, html, h5p |
|     identity    |       inline       | Content artifact without zip file. e.g. pdf, webm    |
|     identity    |       online       | Content without artifact                             |
|     identity    |     online-only    | mp4                                                  |

### **Controlling access using visibility**

Public, private and parent content (visibility: Default, Private, Parent) can be created. visibility: Parent, which can be discoverable only within a specific Collection.

### **Targeted audience**

You can define the target audience e.g. Student, Teacher, Administrator, Parent.

### **Organizing content based on channel**

Contents created within an organization tagged with *channel*. Content created by any organization can be consumed by other organization, this can be managed by *createdFor* attribute.&#x20;

### Organizing content by taxonomy

Contents can be tagged with framework and its category terms to categories it based on framework and enhance the search capabilities. To broaden the search criteria, it would be better to tag content with multiple framework and their category terms. With this, content can be available for different frameworks for consumption.

Contents created within an organisation framework can also be available for other frameworks. Contents can be tagged with multiple frameworks and their respective categories, so that while searching with different frameworks (framework within which content is not created), contents can be available.

More detail can be found [here](https://project-sunbird.atlassian.net/wiki/spaces/User/pages/1878884361/Tag+Contents+with+Multiple+Frameworks).

### List of supported content mimeType

```
"application/pdf",
"application/vnd.ekstep.ecml-archive",  
"application/vnd.ekstep.html-archive",  
"application/vnd.android.package-archive",  
"application/vnd.ekstep.content-archive", 
"application/epub", 
"application/msword",   
"application/vnd.ekstep.h5p-archive", 
"video/webm", 
"video/mp4"
```

### Copy content

Platform supports deep and shallow copy. ***copyType*** attribute hold the value of copy type. When you copy a content, it is tagged with ***origin*** (URI of the source object) and ***originData*** (basic metadata of the source object).

* **Shallow copy:**\
  A collection can also be reused (adopted) by creating a shallow copy of the collection. When a shallow copy is created, the hierarchy of the original collection is not modifiable in the shallow copy. Only the metadata such as name, description, icon etc. of the shallow copy is modifiable. Any change to the hierarchy of the original collection automatically reflects in the shallow copy.
* **Deep copy:**\
  Deep  copy makes the duplicate copy of the content. After that user can modify any metadata of the content.

### [DIAL code generation](https://project-sunbird.atlassian.net/wiki/spaces/SingleSource/pages/1966080027/DIAL+Code+generation)

A DIAL code is a unique code associated to a QR image. A DIAL code can be linked to any learning asset. However, sourcing solution currently enables generating DIAL codes for a collection and link them to the root as well as any node in its hierarchy.

DIAL codes can be generated and linked to a draft version of a collection.

### Concurrent Modification

*versionKey* attribute is used for concurrent modification. When ever update happened, content tagged wit the updated version key.

### License

Default licenses are available in systems listed below

```
"CC BY-NC-SA 4.0",
"CC BY-NC 4.0",
"CC BY-SA 4.0",
"CC BY 4.0",
"CC BY-ND 4.0",
"Standard YouTube License"
```


# Architecture

The below diagram represents the components involved and their arrangement in a **Content** service.

1. The **Content service** module has a play application and its internal actor module.&#x20;
2. **Neo4j** functions as the primary data store for the content-service. Within this Neo4j database, the data of each asset is stored as a graph node, allowing for efficient and interconnected data representation.
3. The asset data is primarily stored in Neo4J. However, due to the large size of external or additional data associated with the asset, such as the body of the asset, collection hierarchy, and other extensive information, this data is stored separately in **Cassandra**. By utilizing Cassandra to store this large-size data, the system can efficiently manage and retrieve asset-related information without overwhelming the Neo4J database. This approach ensures a scalable and optimized storage solution for assets, allowing Neo4J to focus on managing the core relationships and structure of the asset data, while Cassandra handles the storage of extensive asset-related information.
4. To enhance the API's performance and reduce the need for frequent database queries during Read calls, we have implemented **Redis** as a temporary cache. Redis serves as an in-memory data store that holds frequently accessed data. When a Read call is made to the API, the data is first checked in the Redis cache. If the data is found in Redis, the API can retrieve it directly from memory, avoiding the need to hit the database. This caching strategy significantly improves response times and reduces the load on the database, resulting in a more efficient and responsive API. Additionally, by using Redis as a cache, we can ensure that frequently requested data is readily available, further optimizing the overall performance of the API.
5. By leveraging **Flink** (Async Jobs), we enable real-time and batch data processing with low latency, high throughput, and fault tolerance.

<figure><img src="/files/MdUOiyvSFndiO1UrIMAz" alt=""><figcaption><p>Content Architecture</p></figcaption></figure>

## Flow-diagram

<figure><img src="/files/bj09QMcxZUmmmfAipa9t" alt=""><figcaption><p>Content Service Flow Diagram</p></figcaption></figure>


# Code Structure

### Repository

Please refer to the provided link for the content APIs code.

{% embed url="<https://github.com/Sunbird-Knowlg/knowledge-platform/tree/release-5.6.0/content-api>" %}

### Folders structure

#### Content Actors

Within this module, the functionality to handle concurrency and scalability is implemented using AKKA actors.

#### Content Service

By utilizing the Play framework, this module ensures a streamlined and organized approach to developing RESTful APIs. It simplifies the process of defining routes and implementing controller actions, allowing for efficient handling of incoming requests and consistent responses. The Play framework's emphasis on clean and concise code contributes to the overall maintainability and scalability of the application.

#### Hierarchy manager&#x20;

\<TBU>

#### Collection CSV actors

\<TBU>


# Schemas

Content schema: <https://github.com/project-sunbird/knowledge-platform/tree/master/schemas/content/1.0>

Refer [schema structure](/learn/product-and-developer-guide/other/schema-strucure) to define the content schema.


# APIs

### [Content Management APIs](https://documenter.getpostman.com/view/25463377/2s935hRnae)

These APIs are used to manage object type - Content.

* Content CRUD operations ([Create](https://documenter.getpostman.com/view/25463377/2s9YC4VDL4#30136156-f3c5-48dc-b1ec-407be72111c5), [Read](https://documenter.getpostman.com/view/25463377/2s9YC4VDL4#be858100-db3d-4e72-bb59-fa8890b91538), [Update](https://documenter.getpostman.com/view/25463377/2s9YC4VDL4#a218e080-076e-4c64-8d5f-90c53dc4f30e), [Upload Url](https://documenter.getpostman.com/view/25463377/2s9YC4VDL4#e3d3ba72-d49b-4523-b9f3-98ddaaa053d2), [Retire](https://documenter.getpostman.com/view/25463377/2s9YC4VDL4#6d1f3483-cba3-4154-83e3-f8ec9dd4bd6a))
* Content Review ([Submit for Review](https://documenter.getpostman.com/view/25463377/2s9YC4VDL4#d88b34a2-f5c3-4a34-8098-8dd3224416e9), [Reject Content Review](https://documenter.getpostman.com/view/25463377/2s9YC4VDL4#6333eb58-cdd5-4c96-abe1-1a123fe3d97a)) & [Publish](https://documenter.getpostman.com/view/25463377/2s9YC4VDL4#88fef55b-b9a8-4d0a-9f89-7e8dc1276293) workflows
* Content Flagging workflow ([Flag Content](https://documenter.getpostman.com/view/25463377/2s9YC4VDL4#6b7f374d-aa07-4c25-be9f-449efe2e0c66), [Accept Flag](https://documenter.getpostman.com/view/25463377/2s9YC4VDL4#e2a66a66-8b16-4802-b302-e240006cf6ec))
* Content [Copy](https://documenter.getpostman.com/view/25463377/2s9YC4VDL4#7c6b1ca9-a07f-46d8-baee-2d1ab4b543ea) & [Import](https://documenter.getpostman.com/view/25463377/2s9YC4VDL4#684e13d3-3f2f-4470-8c41-5f6f512cd3a3)
* [Content Lock APIs](https://documenter.getpostman.com/view/25463377/2s9YC4VDL4#8da03aeb-6752-476b-a752-4f31ffe94650)


# Jobs

Flink jobs in the Knowledge Platform act as the backbone of data management and content processing, enabling seamless workflows and ensuring that content is efficiently organized, processed, and made available to users. These automated processes play a vital role in maintaining a robust and scalable platform capable of handling diverse data and content requirements.&#x20;

1. Content Publish&#x20;
2. Asset Enrichment
3. Audit Event Generator
4. Video Stream Generator


# Content publish

### :stars: Content-publish

The Job serves as a critical component for publishing content/collection objects submitted for publishing within the system. It fulfils various essential functions to ensure a seamless and efficient publishing process:

1. Download and ECAR Packaging: The Job is responsible for downloading media files and packaging them into ECAR (E-content Archive) format, enabling offline consumption of content.
2. Collection Hierarchy Publishing: It handles the publishing of updated or edited collection hierarchy data, ensuring that changes are correctly reflected in the published content.
3. Metadata Update: The Job updates the metadata of content/collection object nodes with essential publish information, including ECAR paths, versionKey, pkgVersion, streamingUrl, status, and other relevant details.
4. Elastic Search Indexing: For efficient search and retrieval, the Job indexes collection leaf node objects to Elastic Search, enabling streamlined access to content data.
5. Redis Cache Clearing: To maintain data integrity and consistency, the Job clears cached node data from Redis, ensuring that users always access up-to-date information.
6. Output Topics: The Job generates output topics for post-publish processing, video stream generation (if streaming is enabled and the content is of streamable mimeType)

By performing these essential functions, the Job plays a crucial role in ensuring the successful and accurate publishing of content/collection objects. It ensures that published content is properly packaged, metadata is updated, indexing is efficient, and caches are cleared for optimal user experience. Ultimately, the Job contributes to a robust and reliable publishing process within the system.

<figure><img src="/files/hMEP2bdlxlcyu26LHgRH" alt=""><figcaption><p>content-publish</p></figcaption></figure>

### Code:

{% embed url="<https://github.com/Sunbird-Knowlg/knowledge-platform-jobs/tree/release-5.5.0/publish-pipeline/content-publish>" %}

### Configuration:

During the deployment process, the configuration for all knowledge-platform-jobs is sourced from the sunbird-learning-platform repository. On the other hand, for local setups, the configuration is taken from the respective job folders within the knowledge-platform-jobs repository.

**Kafka Topic:**

```
kafka {
      input.topic = {{ env_name }}.publish.job.request
      groupId = {{ env_name }}-content-publish-group
}
```

**Job configuration variables:**

| Variable                              | Purpose                                                                                                                                                                                                                                                  |
| ------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| content.bundleLocation                | <p>Used to specify local/server folder location where artifacts are to be downloaded for ECAR bundling.<br><em>Default value:</em> "/data/contentBundle/"</p>                                                                                            |
| content.isECARExtractionEnabled       | <p>Used to specify if the ECAR extraction is to be enabled to object 'version' and 'latest' cloud location using its 'snapshot' version.<br><em>Default value:</em> true</p>                                                                             |
| content.retry\_asset\_download\_count | <p>Used to specify number of times download attempt for assets part of content/collection object is to be done till it is successfully downloaded.<br><em>Default value:</em> 1</p>                                                                      |
| content.tmp\_file\_location           | NOT USED                                                                                                                                                                                                                                                 |
| content.objectType                    | <p>Used to specify list of valid objectTypes supported for publishing.<br><em>Default value:</em> \["Content", "ContentImage"]</p>                                                                                                                       |
| content.mimeType                      | <p>Used to specify list of valid mimeTypes supported for publishing.<br><em>Default value:</em> \["application/pdf"]</p>                                                                                                                                 |
| content.asset\_download\_duration     | <p>Used to specify time in seconds to wait for the asset download request to respond.<br><em>Default value:</em> "60 seconds"</p>                                                                                                                        |
| content.stream.enabled                | <p>Used to check if streaming is enabled for published objects. If it is enabled, content rendenring is done using 'streamingUrl' attribute else via 'artifactUrl'<br><em>Default value:</em> false</p>                                                  |
| content.stream.mimeType               | <p>Used to check if the mimeType of the object being published is of streamable type. If yes,  event for video-stream-generator job is generated.<br><em>Default value:</em> \["video/mp4"]</p>                                                          |
| content.artifact.size.for\_online     | <p>Used to set the maximum size of the object (in bytes) that can be played by downloading beyond which "contentDisposition" is set to "online-only". <br><em>Default value:</em> 209715200</p>                                                          |
| content.downloadFiles.spine           | <p>Used to specify list of attributes that store asset Urls which are to be downloaded from the mentioned Urls while packaging SPINE ECAR.  <br><em>Default value:</em> \["appIcon"]</p>                                                                 |
| content.downloadFiles.full            | <p>Used to specify list of attributes that store asset Urls which are to be downloaded from the mentioned Urls while packaging FULL ECAR.  <br><em>Default value:</em> \["appIcon", "grayScaleAppIcon", "artifactUrl", "itemSetPreviewUrl", "media"]</p> |
| content.nested.fields                 | <p>Used to specify the list of object properties that are of object types with nested attributes.<br><em>Default value:</em> \["badgeAssertions","targets","badgeAssociations"]</p>                                                                      |
| cloud\_storage.folder.content         | <p>Used to specify the cloud store container folder name for content file storage/extraction etc.<br><em>Default value:</em> "container"</p>                                                                                                             |
| cloud\_storage.folder.artifact        | <p>Used to specify the cloud store container folder name for artifact (media) files storage.<br><em>Default value:</em> "artifact"</p>                                                                                                                   |
| contentTypeToPrimaryCategory          | <p>Used to specify the mapping between contentType and primaryCategory attributes using which object metadata is populated with the missing attribute among two.<br><em>Default value:</em> \[]</p>                                                      |
| compositesearch.index.name            | <p>Used to specify the composite search index name where collection object nodes are synced with updated metadata.<br><em>Default value:</em> "compositesearch"</p>                                                                                      |
| search.document.type                  | <p>Used to specify the ElasticSearch document index type using which collection object nodes are synced with updated metadata.<br><em>Default value:</em> "cs"</p>                                                                                       |
| master.category.validation.enabled    | <p>Used to specify whether object getting published is to be enriched with framework metadata.<br><em>Default value:</em> "Yes"</p>                                                                                                                      |
| service.print.basePath                | NOT USED                                                                                                                                                                                                                                                 |
| mimetype.allowed\_extensions.word     | <p>Used to specify the list of file extensions allowed for uploaded content object. <br><em>Default value:</em> \["doc", "docx", "ppt", "pptx", "key", "odp", "pps", "odt", "wpd", "wps", "wks"]</p>                                                     |
| enableDIALContextUpdate               | Used to sepcify if the DIAL code context update data is to be computed using the linked/de-linked Dial codes of the content/collection.                                                                                                                  |

**Sample Kafka event:**

```
{
  "eid": "BE_JOB_REQUEST",
  "ets": 1619527882745,
  "mid": "LP.1619527882745.32dc378a-430f-49f6-83b5-bd73b767ad36",
  "actor": {
    "id": "content-publish",
    "type": "System"
  },
  "context": {
    "channel": "01309282781705830427",
    "pdata": {
      "id": "org.sunbird.platform",
      "ver": "1.0"
    },
    "env": "dev"
  },
  "object": {
    "id": "do_11329603741667328018",
    "ver": "1619153418829"
  },
  "edata": {
    "publish_type": "public",
    "metadata": {
      "identifier": "do_11329603741667328018",
      "mimeType": "application/pdf",
      "objectType": "Content",
      "lastPublishedBy": "",
      "pkgVersion": 1
    },
    "action": "publish",
    "iteration": 1
  }
}
```

{% hint style="info" %}
*<mark style="color:blue;">**Dependency:**</mark>*&#x20;

**Services:** Content Service - composite search API

**Jobs:** 'post-publish-processor', 'video-stream-generator' & 'mvc-indexer'&#x20;
{% endhint %}


# Asset enrichment

###

### :stars: asset-enrichment:

The Job is responsible for managing image and video media files that are associated with uploaded or created content. Whenever an asset or media file is uploaded as part of the content, a corresponding event is generated and inserted into Kafka, which then triggers the 'asset-enrichment' job.

For image media files, the Job performs image enrichment by resizing the images to achieve an optimal DPI (dots per inch). Additionally, three different image variants are generated, each with low, medium, and high resolutions. These variants are then stored in the cloud, making them readily available for different use cases and devices.

Regarding video media files, the Job handles video enrichment, which includes fetching video metadata and generating a thumbnail for the video. Furthermore, it triggers the 'video-stream-generator' job, which is responsible for creating a streamable source for the video. This streamable source allows users to efficiently stream and access the video content.

Overall, the Job plays a crucial role in enhancing the content by enriching the associated image and video media files. The image enrichment process ensures optimal resizing and the availability of multiple resolution variants, while the video enrichment process provides valuable features such as video metadata, thumbnails, and streamable sources, contributing to an improved user experience and content accessibility.

<figure><img src="/files/cOMLeYIHqB0yTSBhxgvg" alt=""><figcaption><p>asset-enrichment</p></figcaption></figure>

### Code:

{% embed url="<https://github.com/Sunbird-Knowlg/knowledge-platform-jobs/tree/release-5.5.0/asset-enrichment>" %}

### Configuration:

During the deployment process, the configuration for all knowledge-platform-jobs is sourced from the sunbird-learning-platform repository. On the other hand, for local setups, the configuration is taken from the respective job folders within the knowledge-platform-jobs repository.

**Kafka Topic:**

```
kafka { 
    input.topic = {{ env_name }}.learning.job.request 
    groupId = {{ env_name }}-asset-enrichment-group 
}
```

**Job configuration variables:**

| Variable                        | Purpose                                                                                                                                                               |                                                  |
| ------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------ |
| content.stream.enabled          | <p>Used to enable or disable video stream generation for the uploaded video asset.</p><p><em>Default value:</em> false</p>                                            |                                                  |
| content.strem.mimeType          | <p>Used to identify streamable mimeTypes.</p><p><em>Default value:</em> \["video/mp4"]</p>                                                                            |                                                  |
| content.youtube.applicationName | <p>Used as credential for youtube client creation in YouTubeUtil.scala file. <br><em>Default value:</em> "fetch-youtube-license"</p>                                  |                                                  |
| content.youtube.regexPattern    | <p>Used to extract youtube media Id by identifying youtube url pattern using regex.</p><p><em>Default value:</em> \["?vi?=(\[^&]<em>)", "watch?.v=(\[^&])", "(?:embed | vi?)/(\[^/?]</em>)", "^(\[A-Za-z0-9-\_]\*)"]</p> |
| content.upload.context.driven   | *Default value:* true                                                                                                                                                 |                                                  |
| content.max.iteration.count     | <p>Used to indicate number of times the event is to be attempted for publishing till it is processed successfully. </p><p><em>Default value:</em> 2</p>               |                                                  |
| thumbnail.max.sample            | *Default value:* 5                                                                                                                                                    |                                                  |
| thumbnail.max.size.pixel        | D*efault value:* 150                                                                                                                                                  |                                                  |

**Sample Kafka event:**

```
{
  "eid": "BE_JOB_REQUEST",
  "ets": 1648720639981,
  "mid": "LP.1648720639981.d6b1d8c8-7a4a-483a-b83a-b752bede648c",
  "actor": {
    "id": "Asset Enrichment Samza Job",
    "type": "System"
  },
  "context": {
    "pdata": {
      "ver": "1.0",
      "id": "org.sunbird.platform"
    },
    "channel": "01269878797503692810",
    "env": "staging"
  },
  "object": {
    "ver": "1648720639904",
    "id": "do_2135063194770636801334"
  },
  "edata": {
    "action": "assetenrichment",
    "iteration": 1,
    "mediaType": "image",
    "status": "Processing",
    "objectType": "Asset"
  }
}
```

{% hint style="info" %}
*<mark style="color:blue;">**Dependency:**</mark>***&#x20;Jobs:** 'video-stream-generator' .\
**External Software:** imagemagick
{% endhint %}


# Audit event generator

### :stars: audit-event-generator:

The Job utilizes the neo4j mutation data to generate AUDIT events for the Knowlg objects, following the [Sunbird Telemetry specification](https://telemetry.sunbird.org/learn/v3_event_details). These AUDIT events are specifically structured and formatted to adhere to the telemetry standards defined by Sunbird.

By generating these AUDIT events, the Job creates a valuable data source that can be consumed by various data analytics jobs. These data analytics jobs leverage the AUDIT events to perform in-depth analysis, monitoring, and reporting on the activities and changes related to the Knowlg objects within the system.

The AUDIT events provide valuable insights into the life-cycle and modifications of Knowlg objects, enabling data analysts to track and understand user interactions, content updates, and other relevant events. This data-driven approach empowers data analytics teams to derive meaningful patterns, trends, and metrics, facilitating data-driven decision-making and continuous improvement of the Knowlg platform.

In summary, the Job leverages neo4j mutation data to generate AUDIT events that align with Sunbird Telemetry specifications. These events serve as a valuable data source for data analytics jobs, enabling detailed analysis and monitoring of Knowlg objects and supporting data-driven insights to enhance the platform's performance and user experience.

<figure><img src="/files/HI2FDP38xkiNMWoVvddu" alt=""><figcaption><p>audit-event-generator</p></figcaption></figure>

### Code:

{% embed url="<https://github.com/Sunbird-Knowlg/knowledge-platform-jobs/tree/release-5.5.0/audit-event-generator>" %}

### Configuration:

During the deployment process, the configuration for all knowledge-platform-jobs is sourced from the sunbird-learning-platform repository. On the other hand, for local setups, the configuration is taken from the respective job folders within the knowledge-platform-jobs repository.

**Kafka Topic:**

```
kafka {
      input.topic = "{{ env_name }}.learning.graph.events"
      groupId = "{{ env_name }}-audit-event-generator-group"
      output.topic = "{{ env_name }}.telemetry.raw"
}
```

**Job configuration variables:**

<table><thead><tr><th width="227.3754826523833">Variable</th><th>Purpose</th></tr></thead><tbody><tr><td>schema.basepath*</td><td>Used to access object schema files basepath that are hosted publicly using which object schema file path can be constructed. (Basepath Example: <a href="https://sunbirddev.blob.core.windows.net/sunbird-dial-dev/schemas/local">https://sunbirddev.blob.core.windows.net/sunbird-dial-dev/schemas/local</a>, Object schema file path example: <a href="https://sunbirddev.blob.core.windows.net/sunbird-dial-dev/schemas/local/content/schema.json">https://sunbirddev.blob.core.windows.net/sunbird-dial-dev/schemas/local/content/schema.json</a>)</td></tr><tr><td>channel.default*</td><td>Used to generate context information.</td></tr></tbody></table>

**Sample Kafka event:**

```
{
  "ets": 1649228985316,
  "channel": "01269878797503692810",
  "transactionData": {
    "properties": {
      "childNodes": {
        "ov": [
          "do_213509990427254784111670",
          "do_21351048342788505611737",
          "do_21351048359284736011739"
        ],
        "nv": [
          "do_213509990427254784111670",
          "do_21351048342788505611737",
          "do_21351048359284736011739",
          "do_2134250082225192961958"
        ]
      },
      "lastUpdatedOn": {
        "ov": "2022-04-06T07:09:14.653+0000",
        "nv": "2022-04-06T07:09:45.288+0000"
      },
      "versionKey": {
        "ov": "1649228954653",
        "nv": "1649228985288"
      }
    }
  },
  "mid": "1f33cab7-a8ba-4245-87cb-a11ab648d9c8",
  "label": "Timer Course",
  "nodeType": "DATA_NODE",
  "userId": "ANONYMOUS",
  "createdOn": "2022-04-06T07:09:45.316+0000",
  "objectType": "Collection",
  "nodeUniqueId": "do_21351048259398041611736",
  "requestId": null,
  "operationType": "UPDATE",
  "nodeGraphId": 1149046,
  "graphId": "domain"
}
```


# Video stream generator

### :stars: video-stream-generator:

The Job serves the purpose of generating streaming media for the uploaded video contents that have MIME types of MP4 and WebM. This streaming media generation process enables users to efficiently stream and access video content without the need to download the entire video file.

The Job takes the uploaded video files with MP4 and WebM MIME types and processes them to create streaming-friendly versions. These versions are optimized for streaming, allowing users to view the video content in real-time as it is delivered over the internet. By enabling streaming, the Job enhances user experience, reducing buffering time and providing seamless access to video content.

The generated streaming media can be consumed through various streaming services and players, enabling users to access the video content on different devices and platforms without any interruptions. This capability significantly improves the accessibility and usability of the uploaded video contents, making it easier for users to enjoy and interact with the media.

<figure><img src="/files/QvzzvInb2hYAV89rWCiO" alt=""><figcaption><p>video-stream-generator</p></figcaption></figure>

### Code:

{% embed url="<https://github.com/Sunbird-Knowlg/knowledge-platform-jobs/tree/release-5.5.0/video-stream-generator>" %}

### Configuration:

During the deployment process, the configuration for all knowledge-platform-jobs is sourced from the sunbird-learning-platform repository. On the other hand, for local setups, the configuration is taken from the respective job folders within the knowledge-platform-jobs repository.

**Kafka Topic:**

```
kafka {
      input.topic = "{{ env_name }}.content.postpublish.request"
      groupId = "{{ env_name }}-video-stream-generator-group"
    }
```

**Job configuration variables:**

| Variable                 | Purpose                                                                                                                              |
| ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ |
| service.content.basePath | Used to configure Content Service API base path for accessing System Update API (/content/v4/system/update/ - not exposed publicly). |

**Sample Kafka event:**

```
{
  "eid": "BE_JOB_REQUEST",
  "ets": 1649174914686,
  "mid": "LP.1649174914686.02c7ac3d-f7b2-46be-9771-e91645ecd632",
  "actor": {
    "id": "Post Publish Processor",
    "type": "System"
  },
  "context": {
    "pdata": {
      "ver": "1.0",
      "id": "org.sunbird.platform"
    },
    "channel": "01272777697873100812",
    "env": "sunbirdstaging"
  },
  "object": {
    "ver": "1649169311270",
    "id": "do_21350999440018636811684"
  },
  "edata": {
    "action": "post-publish-process",
    "iteration": 1,
    "identifier": "do_21350999440018636811684",
    "channel": "01272777697873100812",
    "mimeType": "application/vnd.ekstep.content-collection",
    "contentType": "Course",
    "pkgVersion": 1,
    "status": "Live",
    "name": "CourseMElenor",
    "trackable": {
      "enabled": "Yes",
      "autoBatch": "No"
    }
  }
}
```

{% hint style="info" %}
*<mark style="color:blue;">**Dependency:**</mark>***&#x20;Services:** Content Service - system update API
{% endhint %}


# FAQs

This page addresses frequently asked questions about Content Service.

What is the life-cycle of a content object?

Content when created will have '**Draft**' status. When the Content is submitted for Review, content status will be updated to '**Review**'. When a Content is accepted (submitted for publishing), status will first move to 'Processing' and then to '**Live**' if it is processed successfully else to '**Failed**'. When a published content is edited, a **image** node gets created with the id ending with '**.img**' (do\_Id.img). Status of the image node will be 'Draft' whereas status of non-image node will be 'Live'. Image node will follow the above life cycle.

When a content in 'Review' status is rejected in Review, status of the content will be updated back to 'Draft'.

When a content is submitted for delete/retire, status of the content will be updated to '**Retired**'.

### What happens when a content object is Retired?

When a content retire API is triggered, status of the content will be updated to '**Retired**'. Please note that when a content with both actual node and image node existing is retired, **image node is hard deleted** from the system and actual node's status is updated to '**Retired**'.

### Can I delete only the image node of a content object?

Yes, discard content API can be used to delete the image node of a content object. Please note that the image node will be **hard deleted** from the system.

### What happens when Discard API is used on a content object with only actual node?

Actual node will be **hard deleted** from the system.

### How is Search Content API different from Composite Search API?

[Search Content API](https://documenter.getpostman.com/view/25463377/2s935hRnae#53a9e9d0-eb1a-4136-9b82-8d0f36c74b9b) can be used for fetching object types 'Content', 'ContentImage', 'Collection', 'CollectionImage' and 'Asset' only. Whereas, [Composite search API](https://documenter.getpostman.com/view/25463377/2s8ZDa3MP7) can be used for fetching all types of objects in the application ('Content', 'ContentImage', 'Collection', 'CollectionImage', 'QuestionSet', 'QuestionSetImage', 'Asset', 'Channel', 'Framework', 'ObjectCategory', 'ObjectCategoryDefintion', 'License', 'Question', etc. )

Note: All attributes in [respective object schemas'](https://github.com/project-sunbird/knowledge-platform/tree/master/schemas) can be used for searching in API filters. However, 'objectType' attribute cannot be used in [Search Content API](https://documenter.getpostman.com/view/25463377/2s935hRnae#53a9e9d0-eb1a-4136-9b82-8d0f36c74b9b).

### How are the content objects stored in database?

Content object metadata is stored in the Neo4j database. Uploaded Source for a content and appIcon images are stored in Cloud. Metadata is synced to Elasticsearch and Redis.

### How to read actual node metadata and image node metadata?

Actual node metadata can be read using 'Read Content API' URL in the format '/content/v2/read/do\_id'.

Image node metadata can be read using 'Read Content API' URL in the format '/content/v2/read/do\_id\*\*?mode=edit\*\*' or '/content/v2/read/do\_id\*\*.img\*\*'.

### How to read ECML content 'body'?

ECML content 'body' can be fetched using 'Read Content API' URL in the format '/content/v2/read/do\_id\*\*?fields=body\*\*'.

### What happens in Content 'Publish'?

When a Content object Publish API is invoked, after metadata validation, content-publish flink job is invoked using respective kafka topic. In the flink job, post the pkgVersion validation, a content is first updated to 'Processing' status. Later, packaging of the content starts (ECAR generation) with types SPINE and FULL. Once ECAR is generated and uploaded to cloud, status is updated to 'Live'.

### How to upload a content?

#### [Upload Content](/learn/product-and-developer-guide/content-service/content-apis/faqs/upload-content)

### What file formats can be uploaded as content?

Currently, the platform supports the following formats for compiled content:

* Text (.pdf)
* Video (.mp4, .webm, YouTube URLs)
* HTML (as .zip)
* ECML (created using the inbuilt content editor)
* EPUB
* H5P

### How the HTML zip content needs to be packaged for upload?

* 'index.html' in the .zip is a must.
* There can be only one level of folders directly inside zip. sub folders (Folders within folders) are not allowed/may not work well.
* File names and Folder names should not contain special characters. It can only be alphanumeric.

### Which attribute of a content contains the uploaded source file path?

When a file is uploaded as a content, source file is copied to the configured cloudstorage blob path and the blob path url is saved in '**artifactUrl**' attribute. When a video content is published, as a post publish process, streaming source is generated and the path is saved in '**streamingUrl**' attribute.


# Upload Content

XYZ Corp, is a global conglomerate with over ten thousand employees, spread across 7 locations. Employee training and enablement is one of the core values of the organization. Before the organization opted to use the Sunbird platform, employees accessed another legacy system that to train and upskill themselves. The legacy system has a large repository of content artifacts. These artifacts have to be uploaded into Sunbird so that employees can access them, even through Sunbird. The organization also creates content artifacts and courses using multiple resources on an ongoing basis. Content and course creators also need to upload all such new content into Sunbird.

### Prerequisites <a href="#prerequisites" id="prerequisites"></a>

* An intialized Sunbird instance with channel
* The [API Key for access](/learn/product-and-developer-guide/player/telemetry-events/generate-api-keys) and basic authentication
* Software that can make API calls like curl or [POSTMAN](https://www.getpostman.com/docs/v6/postman/api_documentation/intro_to_api_documentation)
* Content creation access
* Content artifacts with a unique object ID

### Intended Audience <a href="#intended-audience" id="intended-audience"></a>

* **Content Creator**: Users who have permissions to create, manage, and upload content artifacts
* **Content Reviewer**: Users who have permissions to review and publish content artifacts

> Note: Reviewers cannot change any content. They can only send review comments to content creators for modifications or publish the content artifact directly, if no modifications are required.

### Overview <a href="#overview" id="overview"></a>

Sunbird allows you to assign users with roles that have appropriate permissions to create, store, upload or consume content. Users with content creation rights can create and upload content on Sunbird.

Currently, the Sunbird platform supports the following content formats:

* Text (.pdf)
* Audio (.mp3)
* Images (.jpeg, .png)
* Video (.mp4, .webm, YouTube URLs)
* HTML
* ECML (created using the inbuilt content editor)
* EPUB
* H5P

> Note: Currently, you can upload files with a maximum file size of 50MB per file. More file formats will be supported in future versions of Sunbird.

Sunbird validates every content artifact that is uploaded using metadata. Hence, it is mandatory to tag each file with the following metadata before it is uploaded:

* Content Type
* Mime Type

You can upload video content owned by others, if:

* you have the required permissions from the original creator
* it adheres to prescribed content guidelines
* it is in the accepted file format
* it is within the prescribed size limit

### Taskflow <a href="#taskflow" id="taskflow"></a>

To upload new or existing content (that is not created using Sunbird’s inbuilt content editor) on to Sunbird, use the **Upload Content API**. Before you upload the content, ensure that it is appropriately tagged with metadata and ownership information.

#### Uploading Content Using API <a href="#uploading-content-using-api" id="uploading-content-using-api"></a>

This API is associated with uploading content on the Sunbird Platform.

* The **\_/upload/{content\_ID}** endpoint executes the **Upload Content** request based on validated content metadata associated with the uploaded file
* Specify a valid value in the **{Content Id}** field of API URL
* Specify values for all the mandatory form data parameters

**Path Parameters:**

| PATH PARAMETER | PARAMETER TYPE | DESCRIPTION                   | SAMPLE VALUE             | IS MANDATORY |
| -------------- | -------------- | ----------------------------- | ------------------------ | ------------ |
| Content ID     | String         | Content ID of the Request URL | do\_11258058227713638416 | Yes          |

**Form Data Parameters:**

| PATH PARAMETER | PARAMETER TYPE | DESCRIPTION                                          | SAMPLE VALUE | IS MANDATORY |
| -------------- | -------------- | ---------------------------------------------------- | ------------ | ------------ |
| file           | String         | The name of the content file that you want to upload | sample.pdf   | Yes          |

**Header Parameter**

| HEADER PARAMETER       | PARAMETER TYPE | DESCRIPTION                                                                                                                                                                       | SAMPLE VALUE         | IS MANDATORY |
| ---------------------- | -------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------- | ------------ |
| Content-Type           | String         | The content type entity is the media type of the resource. Possible media types are multipart or form-data                                                                        | Multipart, form-data | Yes          |
| X-Authenticated-Userid | String         | Represents the registered User ID authorized to execute the API                                                                                                                   | userName             | Yes          |
| Authorization          | String         | To make use of the API, you require authorization. Raise a request to the administrator for the use of the API. You will receive the authorization key. Specify the key received. | api\_key             | Yes          |
| ts                     | String         | Time Stamp at which upload request was sent                                                                                                                                       | 2018-09-05T10:55:22Z | Yes          |

**Request Body**

`key`: file `value`: file path (Ex: /Users/john/Documents/test.pdf)

Note: Below is the sample cURL of the complete request.

```
  curl -X POST \
  https://xyz.org/api/content/v1/upload/<CONTENT_ID> \
  -H 'Authorization: <AUTH_TOKEN>' \
  -H 'X-Authenticated-User-Token: <USER_TOKEN>' \
  -H 'cache-control: no-cache' \
  -H 'content-type: multipart/form-data;' \
  -F file=@/Users/john/Documents.pdf

```

**Response Body (Upload Content API)**

```
  {
   
   "id": "xyz.learning.content.upload",
   
   "ver": "3.0",
   
   "ts": "2018-09-05T10:55:22ZZ",
   
   "params": {
   
       "resmsgid": "d6dui5d1-60u8-4a79-23f9-78796195c2h7",
       
       "msgid": null,
       
       "err": null,
       
       "status": "successful",
       
       "errmsg": null
   },
   
   "responseCode": "OK",
   
   "result": {
       "content_url": "https://xyz-public-prod.s3-ap-south-1.amazonaws.com/content/do_112534095400542340156583/artifact/highq_153614492126723.pdf",

       "node_id": "do_112534095400542340156583",
       
       "versionKey": "153614492126723"

   }

}

```

For the youtube content or file url, pass it as file Url in Upload API or set the artifact Url of the content using [Update Content API\*\*](https://documenter.getpostman.com/view/25463377/2s935hRnae#4b7e384c-4e99-433f-ae85-725268a31d09)

After uploading the content, publish the content using \*\*[Publish Content API\*\*](https://documenter.getpostman.com/view/25463377/2s935hRnae#ad1a1dee-3d98-4c63-bb15-8063dd445235).

**Request Body (Publish Content API)**

```
  {

 "request": {

 "content": {

   "lastPublishedBy": "sunbird",

   "publishChecklist": [
       "No Hate speech, Abuse, Violence,Profanity"
       "No Vulgarity",
       "No Discrimination or Defamation",
       "Is suitable for children",
       "Appropriate Title, Description",
       "Correct Board, Grade, Subject, Medium",
       "Appropriate tags such as Resource Type, Concepts",
       "Relevant Keywords",
       "Content plays correctly",
       "Can see the content clearly on Desktop and App",
       "Audio (if any) is clear and easy to understand",
       "No Spelling mistakes in the text",
       "Language is simple to understand"
      ]
    }
  }
}

```

**Response Body (Publish Content API)**

```
  {
"result": {
"node_id": "string",
"versionKey": "string"
  },
"id": ""xyz.learning.content.publish",
"ver": "3.0",
"ts": "2018-09-14T10:44:43ZZ",
"params": {
"resmsgid": "d3415c1a-94c6-4dc7-9c28-3e0dac767ee3",
"msgid": "null",
"err": "null",
"status": "string",
"errmsg": "null"
},
"responseCode": "OK",<br> "result":
{
  "publishStatus": "Publish Operation for Content Id 'do_2125903396473978881177' Started Successfully!",<br>
  "node_id": "do_2125903396473978881177"<br>
}   }

```

> Note: Reviewer has the right to publish content. Use the ID of any approved reviewer as the publisher user ID.

**Response Code**:

**200 SUCCESS**: The upload content operation is successful!

**400 ‘BAD REQUEST**: The upload content operation failed. It indicates you may have missed input for some mandatory parameter.

**500 ‘INTERNAL SERVER ERROR**: We track these errors automatically and try to set it right at the earliest. Try refreshing the page. If the problem stil persists, contact us at <info@sunbird.org>.

<br>


# Media APIs

The media APIs are also part of the content-service. All the API's specific to media (image, audio, video, file) are exposed as part of the content-service itself. These media files are always stored in the blob/cloud to be accessed publicly by mobile/web.

{% hint style="info" %}
Moving out the media-service as an independent service from content-service is planned as part of the roadmap.
{% endhint %}

### :stars:Installation guide

{% content-ref url="/pages/xDsFM70LDqf6jsNfCRIe" %}
[Content Service](/use/installation-guide/services/asset-management-service)
{% endcontent-ref %}


# Features

### List of supported media mimeType

```
"video/quicktime",   
"application/octet-stream",   
"application/json",   
"application/javascript",   
"application/xml",   
"text/plain",   
"text/html",   
"text/javascript",   
"text/xml",   
"text/css",   
"image/jpeg", 
"image/jpg", 
"image/png", 
"image/tiff", 
"image/bmp", 
"image/gif", 
"image/svg+xml",   
"image/x-quicktime",   
"video/avi", 
"video/mpeg", 
"video/quicktime", 
"video/3gpp", 
"video/mp4", 
"video/ogg", 
"video/webm",   
"video/msvideo",   
"video/x-msvideo",   
"video/x-qtc",   
"video/x-mpeg",   
"audio/mp3", 
"audio/mp4", 
"audio/mpeg", 
"audio/ogg", 
"audio/webm", 
"audio/x-wav", 
"audio/wav",   
"audio/mpeg3",   
"audio/x-mpeg-3",   
"audio/vorbis",   
"application/x-font-ttf",     
"application/vnd.ekstep.plugin-archive",   
"video/x-youtube", 
"video/youtube",   
"text/x-url"
```


# Architecture

The below diagram represents the components involved and their arrangement in a Content service to Serve **Media APIs**

<figure><img src="/files/ruPvfECFVELvOItAOaDO" alt=""><figcaption><p>Media Architecture </p></figcaption></figure>

## Flow-diagram

<figure><img src="/files/LzLIenIciasthvPqO7sj" alt=""><figcaption><p>Media APIs Flow Diagram</p></figcaption></figure>


# Schemas

Asset schema: <https://github.com/project-sunbird/knowledge-platform/tree/master/schemas/asset/1.0>

Refer [schema structure](/learn/product-and-developer-guide/other/schema-strucure) to define the asset schema.


# APIs

### [Asset Management APIs](https://documenter.getpostman.com/view/25463377/2s8ZDa32av)

These APIs are used to manage object type - Asset.

* Asset [Create](https://documenter.getpostman.com/view/25463377/2s9YC4VDFh#0663967a-9d34-42f8-8eaf-f8daeee426c9), [Update](https://documenter.getpostman.com/view/25463377/2s9YC4VDFh#f908ed9e-273f-4070-93c2-d5462198c0eb), [Read](https://documenter.getpostman.com/view/25463377/2s9YC4VDFh#12dd7ead-54d5-4668-b89f-110cf4355553), [Upload](https://documenter.getpostman.com/view/25463377/2s9YC4VDFh#db530152-ad26-470c-84a7-1b95f7e0425a) file/fileUrl and [Copy](https://documenter.getpostman.com/view/25463377/2s9YC4VDFh#25d86d99-3466-421f-83dd-5cb67261bd82) operations


# Jobs

Flink jobs in the Knowledge Platform act as the backbone of data management and content processing, enabling seamless workflows and ensuring that content is efficiently organized, processed, and made available to users. These automated processes play a vital role in maintaining a robust and scalable platform capable of handling diverse data and content requirements.&#x20;

1. Asset Enrichment
2. Audit Event Generator


# Asset enrichment

###

### :stars: asset-enrichment:

The Job is responsible for managing image and video media files that are associated with uploaded or created content. Whenever an asset or media file is uploaded as part of the content, a corresponding event is generated and inserted into Kafka, which then triggers the 'asset-enrichment' job.

For image media files, the Job performs image enrichment by resizing the images to achieve an optimal DPI (dots per inch). Additionally, three different image variants are generated, each with low, medium, and high resolutions. These variants are then stored in the cloud, making them readily available for different use cases and devices.

Regarding video media files, the Job handles video enrichment, which includes fetching video metadata and generating a thumbnail for the video. Furthermore, it triggers the 'video-stream-generator' job, which is responsible for creating a streamable source for the video. This streamable source allows users to efficiently stream and access the video content.

Overall, the Job plays a crucial role in enhancing the content by enriching the associated image and video media files. The image enrichment process ensures optimal resizing and the availability of multiple resolution variants, while the video enrichment process provides valuable features such as video metadata, thumbnails, and streamable sources, contributing to an improved user experience and content accessibility.

<figure><img src="/files/cOMLeYIHqB0yTSBhxgvg" alt=""><figcaption><p>asset-enrichment</p></figcaption></figure>

### Code:

{% embed url="<https://github.com/Sunbird-Knowlg/knowledge-platform-jobs/tree/release-5.5.0/asset-enrichment>" %}

### Configuration:

During the deployment process, the configuration for all knowledge-platform-jobs is sourced from the sunbird-learning-platform repository. On the other hand, for local setups, the configuration is taken from the respective job folders within the knowledge-platform-jobs repository.

**Kafka Topic:**

```
kafka { 
    input.topic = {{ env_name }}.learning.job.request 
    groupId = {{ env_name }}-asset-enrichment-group 
}
```

**Job configuration variables:**

| Variable                        | Purpose                                                                                                                                                               |                                                  |
| ------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------ |
| content.stream.enabled          | <p>Used to enable or disable video stream generation for the uploaded video asset.</p><p><em>Default value:</em> false</p>                                            |                                                  |
| content.strem.mimeType          | <p>Used to identify streamable mimeTypes.</p><p><em>Default value:</em> \["video/mp4"]</p>                                                                            |                                                  |
| content.youtube.applicationName | <p>Used as credential for youtube client creation in YouTubeUtil.scala file. <br><em>Default value:</em> "fetch-youtube-license"</p>                                  |                                                  |
| content.youtube.regexPattern    | <p>Used to extract youtube media Id by identifying youtube url pattern using regex.</p><p><em>Default value:</em> \["?vi?=(\[^&]<em>)", "watch?.v=(\[^&])", "(?:embed | vi?)/(\[^/?]</em>)", "^(\[A-Za-z0-9-\_]\*)"]</p> |
| content.upload.context.driven   | *Default value:* true                                                                                                                                                 |                                                  |
| content.max.iteration.count     | <p>Used to indicate number of times the event is to be attempted for publishing till it is processed successfully. </p><p><em>Default value:</em> 2</p>               |                                                  |
| thumbnail.max.sample            | *Default value:* 5                                                                                                                                                    |                                                  |
| thumbnail.max.size.pixel        | D*efault value:* 150                                                                                                                                                  |                                                  |

**Sample Kafka event:**

```
{
  "eid": "BE_JOB_REQUEST",
  "ets": 1648720639981,
  "mid": "LP.1648720639981.d6b1d8c8-7a4a-483a-b83a-b752bede648c",
  "actor": {
    "id": "Asset Enrichment Samza Job",
    "type": "System"
  },
  "context": {
    "pdata": {
      "ver": "1.0",
      "id": "org.sunbird.platform"
    },
    "channel": "01269878797503692810",
    "env": "staging"
  },
  "object": {
    "ver": "1648720639904",
    "id": "do_2135063194770636801334"
  },
  "edata": {
    "action": "assetenrichment",
    "iteration": 1,
    "mediaType": "image",
    "status": "Processing",
    "objectType": "Asset"
  }
}
```

{% hint style="info" %}
*<mark style="color:blue;">**Dependency:**</mark>***&#x20;Jobs:** 'video-stream-generator' .\
**External Software:** imagemagick
{% endhint %}


# Audit event generator

### :stars: audit-event-generator:

The Job utilizes the neo4j mutation data to generate AUDIT events for the Knowlg objects, following the [Sunbird Telemetry specification](https://telemetry.sunbird.org/learn/v3_event_details). These AUDIT events are specifically structured and formatted to adhere to the telemetry standards defined by Sunbird.

By generating these AUDIT events, the Job creates a valuable data source that can be consumed by various data analytics jobs. These data analytics jobs leverage the AUDIT events to perform in-depth analysis, monitoring, and reporting on the activities and changes related to the Knowlg objects within the system.

The AUDIT events provide valuable insights into the life-cycle and modifications of Knowlg objects, enabling data analysts to track and understand user interactions, content updates, and other relevant events. This data-driven approach empowers data analytics teams to derive meaningful patterns, trends, and metrics, facilitating data-driven decision-making and continuous improvement of the Knowlg platform.

In summary, the Job leverages neo4j mutation data to generate AUDIT events that align with Sunbird Telemetry specifications. These events serve as a valuable data source for data analytics jobs, enabling detailed analysis and monitoring of Knowlg objects and supporting data-driven insights to enhance the platform's performance and user experience.

<figure><img src="/files/HI2FDP38xkiNMWoVvddu" alt=""><figcaption><p>audit-event-generator</p></figcaption></figure>

### Code:

{% embed url="<https://github.com/Sunbird-Knowlg/knowledge-platform-jobs/tree/release-5.5.0/audit-event-generator>" %}

### Configuration:

During the deployment process, the configuration for all knowledge-platform-jobs is sourced from the sunbird-learning-platform repository. On the other hand, for local setups, the configuration is taken from the respective job folders within the knowledge-platform-jobs repository.

**Kafka Topic:**

```
kafka {
      input.topic = "{{ env_name }}.learning.graph.events"
      groupId = "{{ env_name }}-audit-event-generator-group"
      output.topic = "{{ env_name }}.telemetry.raw"
}
```

**Job configuration variables:**

<table><thead><tr><th width="227.3754826523833">Variable</th><th>Purpose</th></tr></thead><tbody><tr><td>schema.basepath*</td><td>Used to access object schema files basepath that are hosted publicly using which object schema file path can be constructed. (Basepath Example: <a href="https://sunbirddev.blob.core.windows.net/sunbird-dial-dev/schemas/local">https://sunbirddev.blob.core.windows.net/sunbird-dial-dev/schemas/local</a>, Object schema file path example: <a href="https://sunbirddev.blob.core.windows.net/sunbird-dial-dev/schemas/local/content/schema.json">https://sunbirddev.blob.core.windows.net/sunbird-dial-dev/schemas/local/content/schema.json</a>)</td></tr><tr><td>channel.default*</td><td>Used to generate context information.</td></tr></tbody></table>

**Sample Kafka event:**

```
{
  "ets": 1649228985316,
  "channel": "01269878797503692810",
  "transactionData": {
    "properties": {
      "childNodes": {
        "ov": [
          "do_213509990427254784111670",
          "do_21351048342788505611737",
          "do_21351048359284736011739"
        ],
        "nv": [
          "do_213509990427254784111670",
          "do_21351048342788505611737",
          "do_21351048359284736011739",
          "do_2134250082225192961958"
        ]
      },
      "lastUpdatedOn": {
        "ov": "2022-04-06T07:09:14.653+0000",
        "nv": "2022-04-06T07:09:45.288+0000"
      },
      "versionKey": {
        "ov": "1649228954653",
        "nv": "1649228985288"
      }
    }
  },
  "mid": "1f33cab7-a8ba-4245-87cb-a11ab648d9c8",
  "label": "Timer Course",
  "nodeType": "DATA_NODE",
  "userId": "ANONYMOUS",
  "createdOn": "2022-04-06T07:09:45.316+0000",
  "objectType": "Collection",
  "nodeUniqueId": "do_21351048259398041611736",
  "requestId": null,
  "operationType": "UPDATE",
  "nodeGraphId": 1149046,
  "graphId": "domain"
}
```


# FAQs

This page addresses frequently asked questions about Content Service.

TBD


# Channel APIs

Channel APIs are built and deployed as part of the content service.


# Architecture

{% content-ref url="/pages/dgmjrnmH9XrD3cU9kmkn" %}
[Architecture](/learn/product-and-developer-guide/content-service/content-apis/architecture)
{% endcontent-ref %}


# Schema

Channel Schema: <https://github.com/project-sunbird/knowledge-platform/tree/master/schemas/channel/1.0>


# APIs

### [Channel APIs](https://documenter.getpostman.com/view/25463377/2s8ZDa32ay#693a9b1f-4eb3-4241-9396-5bd9a4c5266c)

These APIs are used to manage object type - channel.

Channel CRUD Operations - [Create](https://documenter.getpostman.com/view/25463377/2s9YC4VDFm#b150b829-350f-4794-9341-0ca097528f8c), [Read](https://documenter.getpostman.com/view/25463377/2s9YC4VDFm#05fae256-2655-47d8-8229-076ed9f95680), [Update](https://documenter.getpostman.com/view/25463377/2s9YC4VDFm#3a6704cd-d8b7-4af6-8ba7-3fa70cacfc65)&#x20;


# Configuration

Channel service file configuration is available at <https://github.com/project-sunbird/sunbird-devops/blob/master/ansible/roles/stack-sunbird/templates/content-service_application.conf>

| Variable                                | Purpose                                                                                                                                                                                            |
| --------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| channel.fetch.suggested\_frameworks     | <p>Enable Suggested Frameworks in Get Channel API.<br><em>Default Value: true</em></p>                                                                                                             |
| channel.content.primarycategories       | List of content primary categories (contentPrimaryCategories attribute) to be displayed during a channel read. *If not configured, it will be empty List.*                                         |
| channel.collection.primarycategories    | List of content primary categories (collectionPrimaryCategories attribute) to be displayed during a channel read. *If not configured, it will be empty List.*                                      |
| channel.asset.primarycategories         | List of content primary categories (assetPrimaryCategories attribute) to be displayed during a channel read. *If not configured, it will be empty List.*                                           |
| channel.content.additionalcategories    | List of content primary categories (contentAdditionalCategories attribute) to be displayed during a channel read. *If not configured, it will be empty List.*                                      |
| channel.collection.additionalcategories | List of content primary categories (collectionAdditionalCategories attribute) to be displayed during a channel read. *If not configured, it will be empty List.*                                   |
| channel.asset.additionalcategories      | List of content primary categories (assetAdditionalCategories attribute) to be displayed during a channel read. *If not configured, it will be empty List.*                                        |
| composite.search.url                    | Composite search service domain URL. *(Example: <https://dev.sunbirded.org/action/composite/v3/search>)*                                                                                           |
| platform.language.codes                 | List of language codes allowed in 'translations' as part of request body in Channel create and update API. *If not configured, 'translations' cannot be passed during Channel create and update .* |
|                                         |                                                                                                                                                                                                    |


# FAQs

This page addresses frequently asked questions about Channel Service.


# License APIs

License APIs are built and deployed as part of the content service.


# Architecture

{% content-ref url="/pages/dgmjrnmH9XrD3cU9kmkn" %}
[Architecture](/learn/product-and-developer-guide/content-service/content-apis/architecture)
{% endcontent-ref %}


# Schema

License Schema: <https://github.com/project-sunbird/knowledge-platform/tree/master/schemas/license/1.0>


# APIs

### [License APIs](https://documenter.getpostman.com/view/25463377/2s935hR7Ek)

These APIs are used to manage object type - license.

License CRUD Operations - [Create](https://documenter.getpostman.com/view/25463377/2s9YC4VDFj#bb8182e0-6582-4ddf-87c8-7e7a7f483640), [Read](https://documenter.getpostman.com/view/25463377/2s9YC4VDFj#377f1d97-0815-4cac-9bd7-139500d6a033), [Update](https://documenter.getpostman.com/view/25463377/2s9YC4VDFj#db9b9b0d-d34c-458c-a49d-3af30f1a610a) and [Delete](https://documenter.getpostman.com/view/25463377/2s9YC4VDFj#7c229990-e7b9-47ec-afe2-0c1966730ac8).


# Configuration

There are no service specific configuration variables.


# FAQs

This page addresses frequently asked questions about License Service.


# Collection APIs

The collection APIs are part of content-service. All the API's specific to the collection are exposed along with the asset in the content-service itself.

{% hint style="info" %}
Moving out the collection-service as an independent service from content-service is planned as part of the roadmap.
{% endhint %}

### :stars:Installation guide

{% content-ref url="/pages/xDsFM70LDqf6jsNfCRIe" %}
[Content Service](/use/installation-guide/services/asset-management-service)
{% endcontent-ref %}


# Features

### List of supported collection mimeType

```
"application/vnd.ekstep.content-collection"
```

### Shallow copy of a collection

A collection can also be reused (adopted) by creating a shallow copy of the collection. When a shallow copy is created, the hierarchy of the original collection is not modifiable in the shallow copy. Only the metadata such as name, description, icon etc. of the shallow copy is modifiable. Any change to the hierarchy of the original collection automatically reflects in the shallow copy.

### [More Features](/learn/product-and-developer-guide/content-service/content-apis/features)


# Architecture

The below diagram represents the components involved and their arrangement in a Content service to Serve **Collection APIs**

<figure><img src="/files/RwbjKJnN3nxoBGmf3uz4" alt=""><figcaption><p>Collection Architecture</p></figcaption></figure>

## Flow-diagram

<figure><img src="/files/V28ggxymcI6UAf6K9UM6" alt=""><figcaption><p>Collection Service Flow Diagram</p></figcaption></figure>


# Schemas

Collection schema: <https://github.com/project-sunbird/knowledge-platform/tree/master/schemas/collection/1.0>

Refer [schema structure](/learn/product-and-developer-guide/other/schema-strucure) to define the collection schema.


# APIs

### [Collection Management AP<mark style="color:blue;">Is</mark>](https://documenter.getpostman.com/view/25463377/2s8ZDa32au)

These APIs are used to manage object type - Collection.

* Collection [Create](https://documenter.getpostman.com/view/25463377/2s9YC4VDL3#d5881536-fd24-4a22-9cc0-1e34ab3b0fac), [Read](https://documenter.getpostman.com/view/25463377/2s9YC4VDL3#81a4bfd1-c361-4e51-bbd5-f5915ece9d1a), [Update](https://documenter.getpostman.com/view/25463377/2s9YC4VDL3#4ff76cdb-70e2-426c-9086-be018049b7e4) and [Retire](https://documenter.getpostman.com/view/25463377/2s9YC4VDL3#f3df53a3-e6ec-488e-96c9-eef95283808d) operations
* Collection Review & Publish workflows
* Collection [Copy](https://documenter.getpostman.com/view/25463377/2s9YC4VDL3#02aa5603-abda-4fab-8361-7c9a104ce3d4) operation
* Collection Flagging workflow ([Flag Collection](https://documenter.getpostman.com/view/25463377/2s9YC4VDL3#58d8f9f3-af98-41b7-9fa0-64dd20897e12), [Accept Flag](https://documenter.getpostman.com/view/25463377/2s9YC4VDL3#b08989c7-743c-4c52-9b5e-77a2ed33a935))
* Collection **Hierarchy** [Create/Update](https://documenter.getpostman.com/view/25463377/2s9YC4VDL3#42b276bf-eca0-48be-8cdf-539270c409bf), [Read](https://documenter.getpostman.com/view/25463377/2s9YC4VDL3#cc653624-1912-437b-adcd-266d264002d6), [Add Contents](https://documenter.getpostman.com/view/25463377/2s9YC4VDL3#311ca039-4080-4229-97d9-60eda50f23bf), [Remove](https://documenter.getpostman.com/view/25463377/2s9YC4VDL3#68e6c89b-c1e2-43d7-a6c1-4878abbf534a) Contents operations
* [Collection TOC import and export](https://documenter.getpostman.com/view/25463377/2s9YC4VDL3#4002fcd9-59a5-4c82-9df7-3f048753a5cf)


# Jobs

Flink jobs in the Knowledge Platform act as the backbone of data management and content processing, enabling seamless workflows and ensuring that content is efficiently organized, processed, and made available to users. These automated processes play a vital role in maintaining a robust and scalable platform capable of handling diverse data and content requirements.&#x20;

* Content Publish&#x20;
* Post publish processor
* Audit Event Generator


# Content publish

### :stars: content-publish:

The Job serves as a critical component for publishing content/collection objects submitted for publishing within the system. It fulfils various essential functions to ensure a seamless and efficient publishing process:

1. Download and ECAR Packaging: The Job is responsible for downloading media files and packaging them into ECAR (E-content Archive) format, enabling offline consumption of content.
2. Collection Hierarchy Publishing: It handles the publishing of updated or edited collection hierarchy data, ensuring that changes are correctly reflected in the published content.
3. Metadata Update: The Job updates the metadata of content/collection object nodes with essential publish information, including ECAR paths, versionKey, pkgVersion, streamingUrl, status, and other relevant details.
4. Elastic Search Indexing: For efficient search and retrieval, the Job indexes collection leaf node objects to Elastic Search, enabling streamlined access to content data.
5. Redis Cache Clearing: To maintain data integrity and consistency, the Job clears cached node data from Redis, ensuring that users always access up-to-date information.
6. Output Topics: The Job generates output topics for post-publish processing, video stream generation (if streaming is enabled and the content is of streamable mimeType)

By performing these essential functions, the Job plays a crucial role in ensuring the successful and accurate publishing of content/collection objects. It ensures that published content is properly packaged, metadata is updated, indexing is efficient, and caches are cleared for optimal user experience. Ultimately, the Job contributes to a robust and reliable publishing process within the system.

<figure><img src="/files/hMEP2bdlxlcyu26LHgRH" alt=""><figcaption><p>content-publish</p></figcaption></figure>

### Code:

{% embed url="<https://github.com/Sunbird-Knowlg/knowledge-platform-jobs/tree/release-5.5.0/publish-pipeline/content-publish>" %}

### Configuration:

During the deployment process, the configuration for all knowledge-platform-jobs is sourced from the sunbird-learning-platform repository. On the other hand, for local setups, the configuration is taken from the respective job folders within the knowledge-platform-jobs repository.

**Kafka Topic:**

```
kafka {
      input.topic = {{ env_name }}.publish.job.request
      groupId = {{ env_name }}-content-publish-group
}
```

**Job configuration variables:**

| Variable                              | Purpose                                                                                                                                                                                                                                                  |
| ------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| content.bundleLocation                | <p>Used to specify local/server folder location where artifacts are to be downloaded for ECAR bundling.<br><em>Default value:</em> "/data/contentBundle/"</p>                                                                                            |
| content.isECARExtractionEnabled       | <p>Used to specify if the ECAR extraction is to be enabled to object 'version' and 'latest' cloud location using its 'snapshot' version.<br><em>Default value:</em> true</p>                                                                             |
| content.retry\_asset\_download\_count | <p>Used to specify number of times download attempt for assets part of content/collection object is to be done till it is successfully downloaded.<br><em>Default value:</em> 1</p>                                                                      |
| content.tmp\_file\_location           | NOT USED                                                                                                                                                                                                                                                 |
| content.objectType                    | <p>Used to specify list of valid objectTypes supported for publishing.<br><em>Default value:</em> \["Content", "ContentImage"]</p>                                                                                                                       |
| content.mimeType                      | <p>Used to specify list of valid mimeTypes supported for publishing.<br><em>Default value:</em> \["application/pdf"]</p>                                                                                                                                 |
| content.asset\_download\_duration     | <p>Used to specify time in seconds to wait for the asset download request to respond.<br><em>Default value:</em> "60 seconds"</p>                                                                                                                        |
| content.stream.enabled                | <p>Used to check if streaming is enabled for published objects. If it is enabled, content rendenring is done using 'streamingUrl' attribute else via 'artifactUrl'<br><em>Default value:</em> false</p>                                                  |
| content.stream.mimeType               | <p>Used to check if the mimeType of the object being published is of streamable type. If yes,  event for video-stream-generator job is generated.<br><em>Default value:</em> \["video/mp4"]</p>                                                          |
| content.artifact.size.for\_online     | <p>Used to set the maximum size of the object (in bytes) that can be played by downloading beyond which "contentDisposition" is set to "online-only". <br><em>Default value:</em> 209715200</p>                                                          |
| content.downloadFiles.spine           | <p>Used to specify list of attributes that store asset Urls which are to be downloaded from the mentioned Urls while packaging SPINE ECAR.  <br><em>Default value:</em> \["appIcon"]</p>                                                                 |
| content.downloadFiles.full            | <p>Used to specify list of attributes that store asset Urls which are to be downloaded from the mentioned Urls while packaging FULL ECAR.  <br><em>Default value:</em> \["appIcon", "grayScaleAppIcon", "artifactUrl", "itemSetPreviewUrl", "media"]</p> |
| content.nested.fields                 | <p>Used to specify the list of object properties that are of object types with nested attributes.<br><em>Default value:</em> \["badgeAssertions","targets","badgeAssociations"]</p>                                                                      |
| cloud\_storage.folder.content         | <p>Used to specify the cloud store container folder name for content file storage/extraction etc.<br><em>Default value:</em> "container"</p>                                                                                                             |
| cloud\_storage.folder.artifact        | <p>Used to specify the cloud store container folder name for artifact (media) files storage.<br><em>Default value:</em> "artifact"</p>                                                                                                                   |
| contentTypeToPrimaryCategory          | <p>Used to specify the mapping between contentType and primaryCategory attributes using which object metadata is populated with the missing attribute among two.<br><em>Default value:</em> \[]</p>                                                      |
| compositesearch.index.name            | <p>Used to specify the composite search index name where collection object nodes are synced with updated metadata.<br><em>Default value:</em> "compositesearch"</p>                                                                                      |
| search.document.type                  | <p>Used to specify the ElasticSearch document index type using which collection object nodes are synced with updated metadata.<br><em>Default value:</em> "cs"</p>                                                                                       |
| master.category.validation.enabled    | <p>Used to specify whether object getting published is to be enriched with framework metadata.<br><em>Default value:</em> "Yes"</p>                                                                                                                      |
| service.print.basePath                | NOT USED                                                                                                                                                                                                                                                 |
| mimetype.allowed\_extensions.word     | <p>Used to specify the list of file extensions allowed for uploaded content object. <br><em>Default value:</em> \["doc", "docx", "ppt", "pptx", "key", "odp", "pps", "odt", "wpd", "wps", "wks"]</p>                                                     |
| enableDIALContextUpdate               | Used to sepcify if the DIAL code context update data is to be computed using the linked/de-linked Dial codes of the content/collection.                                                                                                                  |

**Sample Kafka event:**

```
{
  "eid": "BE_JOB_REQUEST",
  "ets": 1619527882745,
  "mid": "LP.1619527882745.32dc378a-430f-49f6-83b5-bd73b767ad36",
  "actor": {
    "id": "content-publish",
    "type": "System"
  },
  "context": {
    "channel": "01309282781705830427",
    "pdata": {
      "id": "org.sunbird.platform",
      "ver": "1.0"
    },
    "env": "dev"
  },
  "object": {
    "id": "do_11329603741667328018",
    "ver": "1619153418829"
  },
  "edata": {
    "publish_type": "public",
    "metadata": {
      "identifier": "do_11329603741667328018",
      "mimeType": "application/pdf",
      "objectType": "Content",
      "lastPublishedBy": "",
      "pkgVersion": 1
    },
    "action": "publish",
    "iteration": 1
  }
}
```


# Post publish processor

### :stars: post-publish-processor:

The Job plays a crucial role in triggering post-publish activities, specifically when a collection is published. Some of these post-publish activities include:

1. Shallow Copy: In the case of shallow copy type collections, the Job republishes the hierarchy information when an origin collection is published. This ensures that the hierarchy is correctly updated, reflecting changes made during the publishing process.
2. Default DIAL Code Generation: For a 'Course' collection primaryCategory object, the Job takes care of reserving a DIAL Code and generating QR Code images for the reserved DIAL code by default. This ensures that each 'Course' object is uniquely identified with a DIAL Code and that QR Code images are available for easy access and scanning.
3. Course Batch Creation: Based on the 'traceability' configuration, the Job triggers the automatic creation of course batches for 'Course' primaryCategory objects if there are no running batches already existing. This automated batch creation simplifies the process of managing course enrolments and ensures efficient course administration.
4. DIAL Code Context Update: Upon publishing a collection/content, the Job initiates individual context update events for newly added DIAL codes and removes DIAL codes associated with the published collection/content. This ensures that the DIAL code context is consistently updated to reflect the changes made during the publishing process.

In summary, the Job's post-publish activities encompass a range of crucial tasks, from updating hierarchy information and generating default DIAL codes to creating course batches and managing DIAL code context updates. These activities collectively contribute to a seamless and efficient post-publish workflow, ensuring accurate and consistent data handling throughout the publishing process.

<figure><img src="/files/X1JE2zMEFucwrsYXPI74" alt=""><figcaption></figcaption></figure>

### Code:

{% embed url="<https://github.com/Sunbird-Knowlg/knowledge-platform-jobs/tree/release-5.5.0/post-publish-processor>" %}

### Configuration:

During the deployment process, the configuration for all knowledge-platform-jobs is sourced from the sunbird-learning-platform repository. On the other hand, for local setups, the configuration is taken from the respective job folders within the knowledge-platform-jobs repository.

**Kafka Topic:**

```
kafka {
      input.topic = {{ env_name }}.content.postpublish.request
      groupId = {{ env_name }}-post-publish-processor-group
      
      publish.topic = {{ env_name }}.publish.job.request
      qrimage.topic = {{ env_name }}.qrimage.request
      dialcode.context.topic = {{ env_name }}.dialcode.context.job.request
    }
```

**Job configuration variables:**

No job functionality specific variables to list.

**Sample Kafka event:**

```
{
  "eid": "BE_JOB_REQUEST",
  "ets": 1649170015935,
  "mid": "LP.1649170015935.2a7382ff-8bc9-4ff5-8620-2d467cf8990a",
  "actor": {
    "id": "Post Publish Processor",
    "type": "System"
  },
  "context": {
    "pdata": {
      "ver": "1.0",
      "id": "org.sunbird.platform"
    },
    "channel": "01272777697873100812",
    "env": "sunbirdstaging"
  },
  "object": {
    "ver": "1649169952265",
    "id": "do_21350999965318348811690"
  },
  "edata": {
    "action": "post-publish-process",
    "iteration": 1,
    "identifier": "do_21350999965318348811690",
    "channel": "01272777697873100812",
    "mimeType": "application/vnd.ekstep.content-collection",
    "contentType": "Course",
    "pkgVersion": 1,
    "status": "Live",
    "name": "CourseMTimmothy",
    "trackable": {
      "enabled": "Yes",
      "autoBatch": "No"
    }
  }
}
```

{% hint style="info" %}
*<mark style="color:blue;">**Dependency:**</mark>* \
1\. **Kafka** **Jobs:** 'qrcode-image-generator', 'content-publish' (For Shallow Copy Collections publishing)

2\. **Services:** Asset Search Service **(**[Search API](https://documenter.getpostman.com/view/25463377/2s8ZDa3MP7)), LMS Service ([Course Batch Create](https://lern.sunbird.org/learn/product-and-developer-guide/batch-service/api-documentation#api-documentation)), Learning Service to reserve DIAL codes for a collection.
{% endhint %}


# Audit event generator

### :stars: audit-event-generator:

The Job utilizes the neo4j mutation data to generate AUDIT events for the Knowlg objects, following the [Sunbird Telemetry specification](https://telemetry.sunbird.org/learn/v3_event_details). These AUDIT events are specifically structured and formatted to adhere to the telemetry standards defined by Sunbird.

By generating these AUDIT events, the Job creates a valuable data source that can be consumed by various data analytics jobs. These data analytics jobs leverage the AUDIT events to perform in-depth analysis, monitoring, and reporting on the activities and changes related to the Knowlg objects within the system.

The AUDIT events provide valuable insights into the life-cycle and modifications of Knowlg objects, enabling data analysts to track and understand user interactions, content updates, and other relevant events. This data-driven approach empowers data analytics teams to derive meaningful patterns, trends, and metrics, facilitating data-driven decision-making and continuous improvement of the Knowlg platform.

In summary, the Job leverages neo4j mutation data to generate AUDIT events that align with Sunbird Telemetry specifications. These events serve as a valuable data source for data analytics jobs, enabling detailed analysis and monitoring of Knowlg objects and supporting data-driven insights to enhance the platform's performance and user experience.

<figure><img src="/files/HI2FDP38xkiNMWoVvddu" alt=""><figcaption><p>audit-event-generator</p></figcaption></figure>

### Code:

{% embed url="<https://github.com/Sunbird-Knowlg/knowledge-platform-jobs/tree/release-5.5.0/audit-event-generator>" %}

### Configuration:

During the deployment process, the configuration for all knowledge-platform-jobs is sourced from the sunbird-learning-platform repository. On the other hand, for local setups, the configuration is taken from the respective job folders within the knowledge-platform-jobs repository.

**Kafka Topic:**

```
kafka {
      input.topic = "{{ env_name }}.learning.graph.events"
      groupId = "{{ env_name }}-audit-event-generator-group"
      output.topic = "{{ env_name }}.telemetry.raw"
}
```

**Job configuration variables:**

<table><thead><tr><th width="227.3754826523833">Variable</th><th>Purpose</th></tr></thead><tbody><tr><td>schema.basepath*</td><td>Used to access object schema files basepath that are hosted publicly using which object schema file path can be constructed. (Basepath Example: <a href="https://sunbirddev.blob.core.windows.net/sunbird-dial-dev/schemas/local">https://sunbirddev.blob.core.windows.net/sunbird-dial-dev/schemas/local</a>, Object schema file path example: <a href="https://sunbirddev.blob.core.windows.net/sunbird-dial-dev/schemas/local/content/schema.json">https://sunbirddev.blob.core.windows.net/sunbird-dial-dev/schemas/local/content/schema.json</a>)</td></tr><tr><td>channel.default*</td><td>Used to generate context information.</td></tr></tbody></table>

**Sample Kafka event:**

```
{
  "ets": 1649228985316,
  "channel": "01269878797503692810",
  "transactionData": {
    "properties": {
      "childNodes": {
        "ov": [
          "do_213509990427254784111670",
          "do_21351048342788505611737",
          "do_21351048359284736011739"
        ],
        "nv": [
          "do_213509990427254784111670",
          "do_21351048342788505611737",
          "do_21351048359284736011739",
          "do_2134250082225192961958"
        ]
      },
      "lastUpdatedOn": {
        "ov": "2022-04-06T07:09:14.653+0000",
        "nv": "2022-04-06T07:09:45.288+0000"
      },
      "versionKey": {
        "ov": "1649228954653",
        "nv": "1649228985288"
      }
    }
  },
  "mid": "1f33cab7-a8ba-4245-87cb-a11ab648d9c8",
  "label": "Timer Course",
  "nodeType": "DATA_NODE",
  "userId": "ANONYMOUS",
  "createdOn": "2022-04-06T07:09:45.316+0000",
  "objectType": "Collection",
  "nodeUniqueId": "do_21351048259398041611736",
  "requestId": null,
  "operationType": "UPDATE",
  "nodeGraphId": 1149046,
  "graphId": "domain"
}
```


# FAQs

This page addresses frequently asked questions about Collection Service.

### What is the life-cycle of a collection object?

Collection when created will have '**Draft**' status. When the Collection is submitted for Review, collection status will be updated to '**Review**'. When a Collection is accepted (submitted for publishing), status will first move to 'Processing' and then to '**Live**' if it is processed successfully else to '**Failed**'. When a published collection is edited, an **image** node gets created with the id ending with '**.img**' (do\_Id.img). Status of the image node will be 'Draft' whereas status of non-image node will be 'Live'. Image node will follow the above life cycle.

When a collection in 'Review' status is rejected in Review, status of the collection will be updated back to 'Draft'.

When a collection is submitted for delete/retire, status of the collection will be updated to '**Retired**'.

### What happens when a collection object is Retired?

When a collection retire API is triggered, status of the collection will be updated to '**Retired**'. Please note that when a collection with both actual node and image node existing is retired, **image node is hard deleted** from the system and actual node's status is updated to '**Retired**'.

### Can I delete only the image node of a collection object?

Yes, discard collection API can be used to delete the image node of a collection object. Please note that the image node will be **hard deleted** from the system.

### What happens when Discard API is used on a collection object with only actual node?

Actual node will be **hard deleted** from the system.

### Can I add/remove contents to/from collections without needing to update collection hierarchy using Update Hierarchy API?

Yes, using [Add Hierarchy API](https://documenter.getpostman.com/view/25463377/2s8ZDa32au) and Remove Hierarchy API, one can add or remove contents/collections to/from a collection unit.

### How are the collection objects stored in database?

Collection object metadata is stored in the Neo4j database. Uploaded appIcon images are stored in Cloud. Collection Hierarchy is stored in json format in Cassandra database. Metadata is synced to Elasticsearch and Redis.

### How to read actual node metadata and image node metadata?

Actual node metadata can be read using 'Read Collection API' URL in the format '/collection/v1/read/do\_id'.

Image node metadata can be read using 'Read Collection API' URL in the format '/Collection/v1/read/do\_id\*\*?mode=edit\*\*' or '/collection/v1/read/do\_id\*\*.img\*\*'.

### What happens in Collection 'Publish'?

When a Collection object Publish API is invoked, after metadata validation, content-publish flink job is invoked using respective kafka topic. In the flink job, post the pkgVersion validation, a collection is first updated to 'Processing' status. Later, packaging of the collection starts (ECAR generation) with types ONLINE and SPINE. Once ECAR is generated and uploaded to cloud, status is updated to 'Live'.


# Search Service

The **search service** is designed to enable users to efficiently search and explore assets on the platform. The primary API for this purpose is the Composite search API, which provides a unified way to fetch various types of objects within the application. These objects include 'Content', 'ContentImage', 'Collection', 'CollectionImage', 'QuestionSet', 'QuestionSetImage', 'Asset', 'Channel', 'Framework', 'ObjectCategory', 'ObjectCategoryDefinition', 'License', 'Question', and more.

Users have the flexibility to apply filters based on any attribute of the [object model](https://github.com/Sunbird-Knowlg/knowledge-platform/tree/master/schemas). This means that they can narrow down their search results by specifying specific criteria, such as title, category, author, date, or any other relevant attribute associated with the objects.

By default, the Composite search API returns objects that have a 'status' of "Live" and a 'visibility' of "default". These defaults ensure that the initial search results are relevant and align with the platform's standard display settings.

It's important to note that the default result 'limit' is set to 100, meaning that the API will return up to 100 matching objects in a single response. If more results are needed, users may consider pagination or adjusting the limit accordingly.


# Architecture

The below diagram represents the components involved and their arrangement in **Search** service.

1. The **search service** module has a play application and its internal actor module.&#x20;
2. By leveraging **Elasticsearch**, we can deliver an efficient and robust search experience to our users, ensuring that our application performs exceptionally well and remains flexible to adapt to future needs.
3. By leveraging **Flink(Async Jobs)**, we enable real-time and batch data processing with low latency, high throughput, and fault tolerance.

<figure><img src="/files/dcEnrWZdwyCYHDTg1uvN" alt=""><figcaption><p>Search Architecture</p></figcaption></figure>

## Flow-diagram

With the content/collection APIs, we have the ability to create or update assets (content/collection). These assets are stored in Neo4j, and to track any transactions, we've implemented custom [neo4j-extensions](https://github.com/Sunbird-Knowlg/knowledge-platform-db-extensions) that generate transaction logs and store them in log files associated with asset changes in Neo4j.

To process these transaction logs and ensure their real-time availability, we employ Logstash to read the logs from the files and push them to the transaction events Kafka topic. Subsequently, we use a Flink job to consume and process these events, finally storing them in Elasticsearch for further analysis and querying.&#x20;

<figure><img src="/files/XV93fsyLI0etgnt7GFGT" alt=""><figcaption><p>Search Service flow diagram</p></figcaption></figure>


# Code Structure

### Repository

Please refer to the provided link for the Asset search service code.

{% embed url="<https://github.com/Sunbird-Knowlg/knowledge-platform/tree/release-5.7.0/search-api>" %}

### Folders structure

#### Search Core

The search core contains the necessary implementations for filters and responses, which are essential functional objects that contribute to the effectiveness and user-friendliness of the search functionality within the system.

Additionally, the search core utilizes a dependency on the Elasticsearch (ES) client to interact with the Elasticsearch service. The ES client is a library or module that enables communication and interaction with the Elasticsearch cluster.

#### Search Actors

Within this module, the functionality to handle concurrency and scalability is implemented using AKKA actors.

#### Search Service

By utilizing the Play framework, this module ensures a streamlined and organized approach to developing RESTful APIs. It simplifies the process of defining routes and implementing controller actions, allowing for efficient handling of incoming requests and consistent responses. The Play framework's emphasis on clean and concise code contributes to the overall maintainability and scalability of the application.

<br>


# Configuration

This page explains the composite service specific configuration parameter

Composite search service file configuration is available at <https://github.com/project-sunbird/sunbird-devops/blob/master/ansible/roles/stack-sunbird/templates/search-service_application.conf>

| Variable                       | Purpose                                                                                                                                                                                                          |
| ------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| search.es\_conn\_info\*        | Elastic Search host IP                                                                                                                                                                                           |
| compositesearch.index.name\*   | ElasticSearch index for composite search functionality.                                                                                                                                                          |
| search.fields.mode\_collection | <p>Set of fields that will be part of content result when search mode is collection.<br><em>Default list of fields:</em> "identifier", "name", "objectType", "contentType", "mimeType", "size", "childNodes"</p> |
| search.payload.log\_enable     | <p>Parameter to enable and disable search requests logging.<br><em>Default logging:</em> false</p>                                                                                                               |
| channel.default                | Default channel Id to be populated in search request headers if "x-channel-id" is not part of search request headers. *This is not a mandatory configuration.*                                                   |
| telemetry.search.topn          |                                                                                                                                                                                                                  |
| search.batch.size              | Elastic search batch size for number of records to be indexed. *Default value:* 1000                                                                                                                             |
| search.fields.query            |                                                                                                                                                                                                                  |
| search.fields.date             | Used to identify date fields of object models that are being synced to elastic search in ElasticSearchUtil Class. *This is not a mandatory configuration.*                                                       |
| time-zone                      | Used to define time zone property in ElasticSearchUtil Class. *This is not a mandatory configuration.*                                                                                                           |
|                                |                                                                                                                                                                                                                  |

{% hint style="info" %}
'\*' - mandatory configuration fields
{% endhint %}


# APIs

### [Composite Search API](https://documenter.getpostman.com/view/25463377/2s8ZDa3MP7)

The Composite Search API is used for search and discovery of assets/objects created on the system. This service includes only one API.

Kindly use the following link to access the API documentation.

[Search API](https://documenter.getpostman.com/view/25463377/2s8ZDa3MP7)

#### **API Search Filter Operators:**

Filters are by default searched based on equals match, that is case insensitive but the request can specify other operators to search against the fields. These are as follows:

**String fields:**

* Default - String match, contains case insensitive
* startsWith - String match, starts with
* endsWith - String match, ends with
* contains - contains match
* value - contains match
* Array - Exact match with any of the given values

**Number fields:**

* Default - Equals
* \>= - Greater than or equals
* \> - Greater than
* <= - Less than or equals
* < - Less than
* Array - Exact match with any of the given values


# Jobs


# Search indexer

### :stars: search-indexer:

\
The job utilizes Neo4j transactions to index the metadata of objects into three different Elasticsearch indexes:

1. Composite search index: This index is used to store metadata related to objects, making it easier to search and retrieve specific information efficiently.
2. DIAL code index: This index is specifically designed to store data related to DIAL codes, allowing for quick retrieval and analysis of DIAL code-related information.
3. DIAL code metrics index: This index is used to store metrics related to DIAL codes, facilitating the tracking and analysis of metrics associated with DIAL codes.

By leveraging Neo4j transactions, the job ensures that the indexing process is reliable and consistent. The indexed data is then stored in the respective Elasticsearch indexes, enabling efficient searching, querying, and analysis of the object metadata, DIAL codes, and associated metrics.

<figure><img src="/files/P5kX7WBX23bP6ldXyEAa" alt=""><figcaption><p>Search indexer job</p></figcaption></figure>

### Code:

{% embed url="<https://github.com/Sunbird-Knowlg/knowledge-platform-jobs/tree/release-5.5.0/search-indexer>" %}

### Configuration:

During the deployment process, the configuration for all knowledge-platform-jobs is sourced from the sunbird-learning-platform repository. On the other hand, for local setups, the configuration is taken from the respective job folders within the knowledge-platform-jobs repository.

**Kafka Topic:**

```
kafka {
      input.topic = "{{ env_name }}.learning.graph.events"
      groupId = "{{ env_name }}-search-indexer-group"
    }
```

**Job configuration variables:**

| Variable                        | Purpose                                                                                                                                                                                  |
| ------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| compositesearch.index.name      | <p>Used to specify index name of composite search in ElasticSearch.<br><em>Default value:</em> "compositesearch"</p>                                                                     |
| dialcode.index.name             | <p>Used to specify index name of DIAL code in ElasticSearch.<br><em>Default value:</em> "dialcode"</p>                                                                                   |
| dailcodemetrics.index.name      | <p>Used to specify index name of DIAL code metrics in ElasticSearch.<br><em>Default value:</em> "dialcodemetrics"</p>                                                                    |
| restrict.metadata.objectTypes   | NOT USED                                                                                                                                                                                 |
| nested.fields                   | <p>Used to specify the list of object properties that are of object types with nested attributes which are necessary for indexing in ElasticSearch.<br><em>Default value:</em> \[""]</p> |
| schema.definition\_cache.expiry | NOT USED                                                                                                                                                                                 |
| restrict.objectTypes            | <p>Used to specify list of object Types for which transaction event output tags are to be restricted/skipped.<br><em>Default value:</em> \[""]</p>                                       |
| ignored.fields                  | <p><em>Used to specify the list of object properties that are to be ingored while indexing an object document.</em><br><em>Default value:</em> \["responseDeclaration", "body"]</p>      |
|                                 |                                                                                                                                                                                          |

**Sample Kafka** **event:**

```
{
  "ets": 1649229042072,
  "channel": "01269878797503692810",
  "transactionData": {
    "properties": {
      "childNodes": {
        "ov": [
          "do_213509990427254784111670",
          "do_21351048342788505611737",
          "do_2134250082225192961958",
          "do_21351048359284736011739",
          "do_21351048393799270411741",
          "do_21310354431597772814733"
        ],
        "nv": [
          "do_213509990427254784111670",
          "do_21351048342788505611737",
          "do_2134250082225192961958",
          "do_21351048359284736011739",
          "do_21310354431597772814733",
          "do_21351048393799270411741"
        ]
      },
      "lastUpdatedOn": {
        "ov": "2022-04-06T07:10:27.365+0000",
        "nv": "2022-04-06T07:10:42.041+0000"
      },
      "versionKey": {
        "ov": "1649229027365",
        "nv": "1649229042041"
      }
    }
  },
  "mid": "cb29eb1d-810f-4f26-a174-e37f9a681066",
  "label": "Timer Course",
  "nodeType": "DATA_NODE",
  "userId": "ANONYMOUS",
  "createdOn": "2022-04-06T07:10:42.072+0000",
  "objectType": "Collection",
  "nodeUniqueId": "do_21351048259398041611736",
  "requestId": null,
  "operationType": "UPDATE",
  "nodeGraphId": 1149046,
  "graphId": "domain"
}
```


# Audit history indexer

### :stars: audit-history-indexer:

The job utilizes the neo4j mutation data to create an index of transactions for audit purposes. For each neo4j transaction, the job will audit the old and new values of the updated object. This audit trail helps track changes made to the data, allowing for historical analysis and ensuring data integrity and accountability.

<figure><img src="/files/oBZgU0eHNtyD4ZcKbrMV" alt=""><figcaption><p>Audit history indexer job</p></figcaption></figure>

### Code:

{% embed url="<https://github.com/Sunbird-Knowlg/knowledge-platform-jobs/tree/release-5.5.0/audit-history-indexer>" %}

### Configuration:

During the deployment process, the configuration for all knowledge-platform-jobs is sourced from the sunbird-learning-platform repository. On the other hand, for local setups, the configuration is taken from the respective job folders within the knowledge-platform-jobs repository.

**Kafka Topic:**

```
kafka {
      input.topic = "{{ env_name }}.learning.graph.events"
      groupId = "{{ env_name }}-audit-history-indexer-group"
    }
```

**Job configuration variables:**

<table><thead><tr><th width="227.3754826523833">Variable</th><th>Purpose</th></tr></thead><tbody><tr><td>timezone</td><td>Used to generate index name for the autit event to be indexed in ElasticSearch.<br><em>Default value:</em> "IST"</td></tr><tr><td></td><td></td></tr></tbody></table>

**Sample Kafka event:**

```
{
  "ets": 1649232292680,
  "channel": "01269878797503692810",
  "transactionData": {
    "properties": {
      "ownershipType": {
        "ov": null,
        "nv": [
          "createdBy"
        ]
      },
      "code": {
        "ov": null,
        "nv": "org.sunbird.cYmND2"
      },
      "credentials": {
        "ov": null,
        "nv": "{\"enabled\":\"Yes\"}"
      },
      "channel": {
        "ov": null,
        "nv": "01269878797503692810"
      },
      "description": {
        "ov": null,
        "nv": "Enter description for Course"
      },
      "organisation": {
        "ov": null,
        "nv": [
          "Tamil Nadu"
        ]
      },
      "language": {
        "ov": null,
        "nv": [
          "English"
        ]
      },
      "mimeType": {
        "ov": null,
        "nv": "application/vnd.ekstep.content-collection"
      },
      "idealScreenSize": {
        "ov": null,
        "nv": "normal"
      },
      "createdOn": {
        "ov": null,
        "nv": "2022-04-06T08:04:52.679+0000"
      },
      "primaryCategory": {
        "ov": null,
        "nv": "Course"
      },
      "contentDisposition": {
        "ov": null,
        "nv": "inline"
      },
      "lastUpdatedOn": {
        "ov": null,
        "nv": "2022-04-06T08:04:52.679+0000"
      },
      "contentEncoding": {
        "ov": null,
        "nv": "gzip"
      },
      "generateDIALCodes": {
        "ov": null,
        "nv": "No"
      },
      "dialcodeRequired": {
        "ov": null,
        "nv": "No"
      },
      "contentType": {
        "ov": null,
        "nv": "Course"
      },
      "trackable": {
        "ov": null,
        "nv": "{\"enabled\":\"Yes\",\"autoBatch\":\"No\"}"
      },
      "creator": {
        "ov": null,
        "nv": "Guest name changed"
      },
      "lastStatusChangedOn": {
        "ov": null,
        "nv": "2022-04-06T08:04:52.679+0000"
      },
      "audience": {
        "ov": null,
        "nv": [
          "Student"
        ]
      },
      "createdFor": {
        "ov": null,
        "nv": [
          "01269878797503692810"
        ]
      },
      "IL_SYS_NODE_TYPE": {
        "ov": null,
        "nv": "DATA_NODE"
      },
      "visibility": {
        "ov": null,
        "nv": "Default"
      },
      "os": {
        "ov": null,
        "nv": [
          "All"
        ]
      },
      "consumerId": {
        "ov": null,
        "nv": "cb069f8d-e4e1-46c5-831f-d4a83b323ada"
      },
      "targetFWIds": {
        "ov": null,
        "nv": [
          "tn_k-12_5"
        ]
      },
      "discussionForum": {
        "ov": null,
        "nv": "{\"enabled\":\"Yes\"}"
      },
      "mediaType": {
        "ov": null,
        "nv": "content"
      },
      "osId": {
        "ov": null,
        "nv": "org.ekstep.quiz.app"
      },
      "version": {
        "ov": null,
        "nv": 2
      },
      "versionKey": {
        "ov": null,
        "nv": "1649232292679"
      },
      "idealScreenDensity": {
        "ov": null,
        "nv": "hdpi"
      },
      "license": {
        "ov": null,
        "nv": "CC BY 4.0"
      },
      "createdBy": {
        "ov": null,
        "nv": "fca2925f-1eee-4654-9177-fece3fd6afc9"
      },
      "compatibilityLevel": {
        "ov": null,
        "nv": 1
      },
      "IL_FUNC_OBJECT_TYPE": {
        "ov": null,
        "nv": "Collection"
      },
      "userConsent": {
        "ov": null,
        "nv": "Yes"
      },
      "name": {
        "ov": null,
        "nv": "Untitled Course"
      },
      "IL_UNIQUE_ID": {
        "ov": null,
        "nv": "do_21351051094159360011743"
      },
      "status": {
        "ov": null,
        "nv": "Draft"
      },
      "resourceType": {
        "ov": null,
        "nv": "Course"
      }
    }
  },
  "mid": "eafe3ff1-c1bc-4a5c-85e6-c5b4c493cc69",
  "label": "Untitled Course",
  "nodeType": "DATA_NODE",
  "userId": "fca2925f-1eee-4654-9177-fece3fd6afc9",
  "createdOn": "2022-04-06T08:04:52.680+0000",
  "objectType": "Collection",
  "nodeUniqueId": "do_21351051094159360011743",
  "requestId": null,
  "operationType": "CREATE",
  "nodeGraphId": 1149047,
  "graphId": "domain"
}
```


# FAQs

This page addresses frequently asked questions about Composite Search API.

### Samples of how to use filter operators in composite search API?

**Sample 1** - Find all node types that contain specific search term (content, words, assets)

{ "request": { "query":"elephant", "limit":10 } }

**Sample 2** - Find only TextBook

{ "request": {"filters":{"primaryCategory":"Digital Textbook"}, "limit":10 } }

**Sample 3** - Find "Explanation Content" less than 1MB

{ "request": {"filters":{"primaryCategory":"Explanation Content", "size": {"<=" : "1000000"}}, "limit":10 } }

**Sample 4** - Find resources whose 'name' starts with "A" (e.g. for alphabetic navigation)

{ "request": { "filters": { "primaryCategory":"Explanation Content", "name": { "startsWith": "A" } } } }

**Sample 5** - Find resources without 'appIcon'

{ "request": { "filters": { "primaryCategory":"Explanation Content" }, "not\_exists":\["appIcon"] } }

**Sample 6** - Find resources with 'appIcon'

{ "request": { "filters": { "primaryCategory":"Explanation Content"}, "exists":\["appIcon"] } }

**Sample 7** - Find resources and aggregate results by 'language' and 'subject'

{ "request": { "filters": { "primaryCategory":"Explanation Content"}, "facets":\["language","subject"] } }

**Sample 8** - Find resources and sort results by name ascending and size desc

{ "request": { "filters": { "primaryCategory":"Explanation Content"}, "sort\_by":{"name":"asc", "size":"desc"} } }

**Sample 9** - Get first 10 results

{ "request": { "filters": { "primaryCategory":"Explanation Content"}, "sort\_by":{"name":"asc", "size":"desc"}, "offset": 0, "limit": 10 } }

**Sample 10** - Get 4th page of results. Results from 30 - 40 index.

{ "request": { "filters": { "primaryCategory":"Explanation Content"}, "sort\_by":{"name":"asc", "size":"desc"}, "offset": 30, "limit": 10 } }

**Sample 11** - Get the fields specified.

{ "request": { "filters": { "primaryCategory":"Explanation Content"}, "exists":\["appIcon"], "fields":\["name","description","identifier","mimeType","createdOn"] } }

**Sample 12** - Search for content with soft constraints

{ "request": { "filters": { "objectType": \["Content"], "primaryCategory": \["Explanation Content"], "gradeLevel" : \["Grade 1"], "ageGroup" : \["5-6"], "status": \["Live"] }, "mode" : \["soft"], "softConstraints": {"ageGroup" : 2, "gradeLevel" : 3 } } }

**Sample 13** - Find "Explanation Content" created between a time range

{ "request": { "filters": { "primaryCategory":"Explanation Content", "createdOn": {">=":"2020-07-28T01:27:16.559+0000", "<":"2021-10-28T01:27:16.559+0000"} }, "sort\_by":{"name":"asc"}, "offset": 0, "limit": 10 } }

**Sample 14** - Find published Textbooks to which a content is linked to

{ "request": { "filters": { "primaryCategory":"Digital Textbook", "leafNodes": {"contains": "do\_Id\_\_\_content"} }, "sort\_by":{"name":"asc"} } }

### What are the different modes that can be passed in search request?

There are 2 modes in search. 'soft' and 'collection' mode. By default, mode is 'soft' in a search request if the same is not specified. When the mode is specified as 'collection', then the search result will contain 'collections' block which will have the metadata of collections of the collection units that is part of the search result

Example:

```
curl --location --request POST 'https://dev.sunbirded.org//api/content/v1/search' \
--header 'Content-Type: application/json' \
--data-raw '{
    "request": {
        "filters": {
            "status":["Live"],
            "visibility": ["Default","Parent"],
            "dialcodes":["BBU2JE"]
        },
        "mode": "Collection"
    }
}'


Response:
"result": {
        "collections": [
            {
                "identifier": "do_31277376449209958415961",
                "subject": [
                    "Mathematics"
                ],
                "childNodes": [
                    "do_31277376466550784015998"
                ],
                "mimeType": "application/vnd.ekstep.content-collection",
                "medium": [
                    "English"
                ],
                "objectType": "Collection",
                "gradeLevel": [
                    "Class 9"
                ],
                "appIcon": "https://ntpproductionall.blob.core.windows.net/ntp-content-production/content/do_31277376449209958415961/artifact/9-maths_1527603481839.thumb.jpg",
                "size": 2660278,
                "name": "B566_STD_9_MATHS_EM_FULL",
                "contentType": "TextBook",
                "board": "State (Tamil Nadu)",
                "resourceType": "Book"
            }
        ],
        "count": 1,
        "content": [
            {
                "parent": "do_31277376466550784016000",
                "code": "do_31277376466550784015998",
                "purpose": "HS",
                "channel": "01235953109336064029450",
                "downloadUrl": "https://ntpproductionall.blob.core.windows.net/ntp-content-production/ecar_files/do_31277376449209958415961/b566_std_9_maths_em_full_1602760532721_do_31277376449209958415961_7.0_spine.ecar",
                "description": "B566U2P63HS",
                "mimeType": "application/vnd.ekstep.content-collection",
                "variants": {
                    "online": {
                        "ecarUrl": "https://ntpproductionall.blob.core.windows.net/ntp-content-production/ecar_files/do_31277376449209958415961/b566_std_9_maths_em_full_1602760535048_do_31277376449209958415961_7.0_online.ecar",
                        "size": 178355
                    },
                    "spine": {
                        "ecarUrl": "https://ntpproductionall.blob.core.windows.net/ntp-content-production/ecar_files/do_31277376449209958415961/b566_std_9_maths_em_full_1602760532721_do_31277376449209958415961_7.0_spine.ecar",
                        "size": 2660278
                    }
                },
                "leafNodes": [
                    "do_31283041754486374417786",
                    "do_31283041255128268819778"
                ],
                "createdOn": "2019-05-31T10:10:44.520+0000",
                "objectType": "Content",
                "primaryCategory": "Textbook Unit",
                "children": [
                    "do_31283041255128268819778",
                    "do_31283041754486374417786"
                ],
                "lastUpdatedOn": "2020-10-15T11:15:24.872+0000",
                "contentType": "TextBookUnit",
                "dialcodeRequired": "Yes",
                "identifier": "do_31277376466550784015998",
                "lastStatusChangedOn": "2019-05-31T10:10:44.520+0000",
                "audience": [
                    "Student"
                ],
                "visibility": "Parent",
                "index": 5,
                "languageCode": [],
                "graph_id": "domain",
                "nodeType": "DATA_NODE",
                "pkgVersion": 7,
                "versionKey": "1559297444520",
                "framework": "tn_k-12_5",
                "dialcodes": [
                    "BBU2JE"
                ],
                "depth": 2,
                "lastPublishedOn": "2020-10-15T11:15:30.038+0000",
                "compatibilityLevel": 1,
                "leafNodesCount": 2,
                "name": "2.6.2 Laws of Radicals",
                "status": "Live",
                "node_id": 0
            }
        ],
        "collectionsCount": 1
    }
```

In the above example 'Response',

"collections" block gives the information of the **TextBook** that contains the 'TextBookUnit' to which DIAL Code is tagged to. "identifier" - id of the TextBook, "name" - name of the TextBook, "board" - board value to which TextBook is tagged to. similarly, "medium", "gradeLevel" (Class) and "subject" values.

"content" block gives the information of the **TextBook Unit** DIAL Code is tagged to. "identifier" - id of the TextBook Unit, "name" - name of the TextBook Unit, "topic" - topics/concepts to which Unit is tagged with.

### What is 'softConstraints' in search request?

'softConstraints' is used to fetch results from ElasticSearch by boosting the relevance of a document based on a particular value of a field.

### Is 'Fuzzy Search' enabled in search API?

No. Fuzzy search has not been implemented in the search API.


# Taxonomy Service (Taxonomy & Tagging)


# Framework APIs

Taxonomy Framework powers the knowledge arrangement as per domain. The Framework enables this by providing the ability to tag an asset with attributes required by the domain.

Domain-specific tagging ensure the tagging enables at asset is relevant and helps in assets discovery by navigation and search.

Take an example of school education, assets created for K-12 can have taggable attributes like BOARD, GRADE, MEDIUM and SUBJECT. Users can search assets based on Grade, Medium Subject or Board, Or they can Navigate to relevant assets starting from Board -> Grade -> Medium-> Subject. This will narrow down the asset at each level and ensure only relevant assets are given to users.

## Capabilities

There are more than ten million teachers in India, many syllabi, many textbooks, varied pedagogic styles, methods, teaching techniques, and a wide diversity of student demographics and contexts. Taxonomy and tagging infrastructure makes it possible to easily categorize knowledge and makes it discoverable.

Taxonomy framework enables

* Efficient way of organizing digital assets
* Help users discover relevant content efficiently
* Different frameworks can be created for different needs
* Each organization can define their frameworks

![](/files/oViFZb5K9OAkS7NvEt03)

Taxonomy framework usecase

{% embed url="<https://www.youtube.com/watch?t=202s&v=EtYU11qNciQ>" %}
Taxonomy framework usecase
{% endembed %}


# Architecture

The below diagram represents the components involved and their arrangement in a Taxonomy service to Serve **Framework APIs**

<figure><img src="/files/lMHnNGHZTXfDnm9gEbIA" alt=""><figcaption></figcaption></figure>


# Code Structure

### Repository

Please refer to the provided link for the content APIs code.

{% embed url="<https://github.com/Sunbird-Knowlg/knowledge-platform/tree/release-5.6.0/taxonomy-api>" %}

### Folders structure

#### Taxonomy Actors

Within this module, the functionality to handle concurrency and scalability is implemented using AKKA actors.

#### Taxonomy Service

By utilizing the Play framework, this module ensures a streamlined and organized approach to developing RESTful APIs. It simplifies the process of defining routes and implementing controller actions, allowing for efficient handling of incoming requests and consistent responses. The Play framework's emphasis on clean and concise code contributes to the overall maintainability and scalability of the application.


# Configuration

Taxonomy service file configuration is available at <https://github.com/project-sunbird/sunbird-devops/blob/master/ansible/roles/stack-sunbird/templates/taxonomy-service_application.conf>

| Variable                           | Purpose                                                                                                                                  |
| ---------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| master.category.validation.enabled | <p>Variable used to enable or diable category instance code validation against master category codes.<br><em>Default Value: Yes</em></p> |
|                                    |                                                                                                                                          |


# Schemas

Framework Schema: <https://github.com/project-sunbird/knowledge-platform/tree/master/schemas/framework/1.0>

Category Schema: <https://github.com/project-sunbird/knowledge-platform/tree/master/schemas/category/1.0>

CategoryInstance Schema: <https://github.com/project-sunbird/knowledge-platform/tree/master/schemas/categoryinstance/1.0>

Term Schema: <https://github.com/project-sunbird/knowledge-platform/tree/master/schemas/term/1.0>


# APIs

The Framework API resources is basically a supporting data structure which serves as a template.  It can be used in places where the structure remains the same but only the usage changes.

[FRAMEWORK APIs](https://documenter.getpostman.com/view/25463377/2s9YC4VDL6)

* Framework [Create](https://documenter.getpostman.com/view/25463377/2s9YC4VDL6#6c1af6c3-7b25-4293-9896-b143a25bee15), [Read](https://documenter.getpostman.com/view/25463377/2s9YC4VDL6#97e5d490-1098-4d1a-af14-9e1b3c6499a3), [Update](https://documenter.getpostman.com/view/25463377/2s9YC4VDL6#8db4d673-ab9b-49e8-aec2-c71a5ad47b03), [Publish](https://documenter.getpostman.com/view/25463377/2s9YC4VDL6#5f421417-227b-4051-a3bf-e1cb371ea69d) and [Copy](https://documenter.getpostman.com/view/25463377/2s9YC4VDL6#bb484ad0-527a-4e97-bd14-e1ad555ed616)
* Framework Category [Read](https://documenter.getpostman.com/view/25463377/2s9YC4VDL6#67984ffa-2b07-4c93-b51d-2a017c04f47f), [Create](https://documenter.getpostman.com/view/25463377/2s8ZDa32ay#7b07da54-506c-410e-a263-63d3b5522f38) and [Update](https://documenter.getpostman.com/view/25463377/2s9YC4VDL6#41effcfc-7152-423d-8bb9-c44cee348293)
* Framework Term [Read](https://documenter.getpostman.com/view/25463377/2s9YC4VDL6#78bfe807-4824-425e-b54a-40caef4f976d), [Create](https://documenter.getpostman.com/view/25463377/2s9YC4VDL6#d40ce356-8c0e-4d2c-b567-9f4b799ae760) and [Update](https://documenter.getpostman.com/view/25463377/2s9YC4VDL6#8fb1b944-20c7-4fc0-8d51-2a299232a9ca)


# Jobs

Flink jobs in the Knowledge Platform act as the backbone of data management and content processing, enabling seamless workflows and ensuring that content is efficiently organized, processed, and made available to users. These automated processes play a vital role in maintaining a robust and scalable platform capable of handling diverse data and content requirements.&#x20;

1. Audit Event Generator


# Audit event generator

### :stars: audit-event-generator:

The Job utilizes the neo4j mutation data to generate AUDIT events for the Knowlg objects, following the [Sunbird Telemetry specification](https://telemetry.sunbird.org/learn/v3_event_details). These AUDIT events are specifically structured and formatted to adhere to the telemetry standards defined by Sunbird.

By generating these AUDIT events, the Job creates a valuable data source that can be consumed by various data analytics jobs. These data analytics jobs leverage the AUDIT events to perform in-depth analysis, monitoring, and reporting on the activities and changes related to the Knowlg objects within the system.

The AUDIT events provide valuable insights into the life-cycle and modifications of Knowlg objects, enabling data analysts to track and understand user interactions, content updates, and other relevant events. This data-driven approach empowers data analytics teams to derive meaningful patterns, trends, and metrics, facilitating data-driven decision-making and continuous improvement of the Knowlg platform.

In summary, the Job leverages neo4j mutation data to generate AUDIT events that align with Sunbird Telemetry specifications. These events serve as a valuable data source for data analytics jobs, enabling detailed analysis and monitoring of Knowlg objects and supporting data-driven insights to enhance the platform's performance and user experience.

<figure><img src="/files/HI2FDP38xkiNMWoVvddu" alt=""><figcaption><p>audit-event-generator</p></figcaption></figure>

### Code:

{% embed url="<https://github.com/Sunbird-Knowlg/knowledge-platform-jobs/tree/release-5.5.0/audit-event-generator>" %}

### Configuration:

During the deployment process, the configuration for all knowledge-platform-jobs is sourced from the sunbird-learning-platform repository. On the other hand, for local setups, the configuration is taken from the respective job folders within the knowledge-platform-jobs repository.

**Kafka Topic:**

```
kafka {
      input.topic = "{{ env_name }}.learning.graph.events"
      groupId = "{{ env_name }}-audit-event-generator-group"
      output.topic = "{{ env_name }}.telemetry.raw"
}
```

**Job configuration variables:**

<table><thead><tr><th width="227.3754826523833">Variable</th><th>Purpose</th></tr></thead><tbody><tr><td>schema.basepath*</td><td>Used to access object schema files basepath that are hosted publicly using which object schema file path can be constructed. (Basepath Example: <a href="https://sunbirddev.blob.core.windows.net/sunbird-dial-dev/schemas/local">https://sunbirddev.blob.core.windows.net/sunbird-dial-dev/schemas/local</a>, Object schema file path example: <a href="https://sunbirddev.blob.core.windows.net/sunbird-dial-dev/schemas/local/content/schema.json">https://sunbirddev.blob.core.windows.net/sunbird-dial-dev/schemas/local/content/schema.json</a>)</td></tr><tr><td>channel.default*</td><td>Used to generate context information.</td></tr></tbody></table>

**Sample Kafka event:**

```
{
  "ets": 1649228985316,
  "channel": "01269878797503692810",
  "transactionData": {
    "properties": {
      "childNodes": {
        "ov": [
          "do_213509990427254784111670",
          "do_21351048342788505611737",
          "do_21351048359284736011739"
        ],
        "nv": [
          "do_213509990427254784111670",
          "do_21351048342788505611737",
          "do_21351048359284736011739",
          "do_2134250082225192961958"
        ]
      },
      "lastUpdatedOn": {
        "ov": "2022-04-06T07:09:14.653+0000",
        "nv": "2022-04-06T07:09:45.288+0000"
      },
      "versionKey": {
        "ov": "1649228954653",
        "nv": "1649228985288"
      }
    }
  },
  "mid": "1f33cab7-a8ba-4245-87cb-a11ab648d9c8",
  "label": "Timer Course",
  "nodeType": "DATA_NODE",
  "userId": "ANONYMOUS",
  "createdOn": "2022-04-06T07:09:45.316+0000",
  "objectType": "Collection",
  "nodeUniqueId": "do_21351048259398041611736",
  "requestId": null,
  "operationType": "UPDATE",
  "nodeGraphId": 1149046,
  "graphId": "domain"
}
```


# FAQs

This page is used to address frequently asked questions about Framework service.

### **How to create a Framework?**

A Channel/Tenant can have one or more frameworks.

Prerequisite: “Master Categories” should be created while doing service deployment. Master Categories are the list of categories from which a new framework’s category should be mapped to.

A Framework can have its categories corresponding to all master categories or its subset. Framework Categories are linked to Master categories by using the 'code' value same as that of master categories.

Below are the steps to create a new framework:

1. [Create Framework](https://documenter.getpostman.com/view/25463377/2s8ZDa32ay#1114f15b-a5af-44bc-a390-004b35d25efd)
2. [Create Framework categories](https://documenter.getpostman.com/view/25463377/2s8ZDa32ay#7b07da54-506c-410e-a263-63d3b5522f38)
3. [Create Terms for each category](https://documenter.getpostman.com/view/25463377/2s8ZDa32ay#43c4fb52-a4d6-486c-beec-6c262571bf4a)
4. [Publish the Framework](https://documenter.getpostman.com/view/25463377/2s8ZDa32ay#eb30e906-51f6-4aa1-9161-0a58b0c2126e)

Each term can be associated with another term from **another category** by using *'associationswith'* attribute in [Term update API](https://documenter.getpostman.com/view/25463377/2s8ZDa32ay#f16ade99-c9cd-4055-a251-5d8c996e3258)

`Example: { "request": { "term": {`` `**`"associationswith": [ { "identifier": "associatetermidentifier1"`**` ``//Term you want to add association with`` `**`}, { "identifier": "associatetermidentifier2"`**` ``//Term you want to add association with`` `**`} ]`**` ``} } }`

'Level1-term', 'Level2-term' and 'Level3-term' can be created as treemap under the framework category. 'Level1-term’ is created as a term directly associated with framework category. However, 'Level2-term' and 'Level3-term' are created as terms using the Term create API with reference to parent using *'parents'* attribute in [Term create API](https://documenter.getpostman.com/view/25463377/2s8ZDa32ay#43c4fb52-a4d6-486c-beec-6c262571bf4a).

`Example: { "request": { "term": { "name": "Sample Term", "label": "Sample Term", "description": "Sample Term", "code": "sampleTerm" //needs to be unique within a framework "index": 20 //index of term display`` `**`"parents": [ { "identifier": "parentIdentifier"`**` ``//Term you want to add association to`` `**`} ]`**` ``} } }`

[**API to create ‘Framework Master Category’:**](https://documenter.getpostman.com/view/25463377/2s8ZDa32ay#2985d446-cd84-497a-b7dd-d965be66c6bf)

```
curl --location --request POST '{{host}}/action/framework/v3/category/master/create'
--header 'Content-Type: application/json'
--header 'Authorization: Bearer {{APIKey}}'
--header 'x-authenticated-user-token: {{user_token}}'
--data-raw '{"request":{"category":{"name":"Learning Outcome","description":"Learning Outcome","code":"learningOutcome","targetIdFieldName":"targetLearningOutcomeIds","searchLabelFieldName":"se_learningOutcomes","searchIdFieldName":"se_learningOutcomeIds","orgIdFieldName":"learningOutcomeIds"}}}'
```

### [Create Framework](/learn/product-and-developer-guide/taxonomy-and-tagging/framework-service/faqs/create-framework)&#x20;

### [Add Content to Framework](/learn/product-and-developer-guide/taxonomy-and-tagging/framework-service/faqs/add-content-to-framework)

### How to fetch list of all Frameworks in the sunbird instance?

Using [Frameworks List API](https://documenter.getpostman.com/view/25463377/2s8ZDa32ay#728e3b5e-18ab-4a14-8b54-b4ab9ed4eb90), we can fetch all the existing frameworks in the application


# Create Framework

Before we get into details of how to create a new framework in Sunbird, its important to explain the concepts and differences between a **Taxonomy** and **Framework**. Both a taxonomy and framework describe the same domain. A taxonomy is an arrangement or division according to a predetermined system, while a framework is the resultant catalog that gives freedom for discussion, analysis and information retrieval. The framework extends the knowledge model of a taxonomy. The intent of creating a framework is to enable organizations organize their content in a structure which is easily discoverable. Within Sunbird, the main objective of the framework is to ensure that content creators have an easy interface to tag content with relevant metadata. Appropriate metadata allows user to search for content and get relevant results. Separating the taxonomy from its extension, in the form of framework(s) provides experts and pedagogues the power and flexibility to model and tag content. The framework consists of categories and terms within a specific domain.

Sunbird enables seamless access and discoverability of content through a framework. An organization can use existing framework categories (concepts) and terms (specifications) and further link them to their own framework.

### Scenario <a href="#scenario" id="scenario"></a>

Let us consider an example of an organization, ABC Organization, which works in the domain of water conservation and works with multiple NGOs, village panchayats, and district administration authorities in multiple states of India. They need to create the framework for the water management domain. Their framework will have terms associated with categories specific to the domain. The following example depicts the categories and terms specifically used for the water management framework:

| FRAMEWORK NAME | CATEGORIES            | TERMS                               |
| -------------- | --------------------- | ----------------------------------- |
| ABC            | Resources             | Ground Water, Spring, Surface Water |
|                | Governance            | Ground Water, Spring, Surface Water |
|                | Measurement & Mapping | Ground Water, Spring, Surface Water |
|                | Funds                 | State, Central, Global              |
|                | Management            | Ground Water, Spring, Surface Water |

ABC Organization, may choose a predefined category and associate it to their own framework. Each category in the framework has terms associated with it. These terms are relevant to the created framework and can be created by the organization.

While creating a new framework, the framework creator needs to set up a new framework and align it to the categories and terms. A category can have terms either in sequential list or in hierarchical structure. Terms can be associated with other terms across categories. As a result, it is possible to select a term in the first category and hence restrict the set of available terms for the next category and so on. The organizations that are adopting Sunbird can link the categories and also change the labels but cannot override or add a new categories on their own. However, the Sunbird instance has the following categories in its predefined frameworks:

```
  - Subject: classification of stream specific values
- Board: certifying body/stream government or private organization
- Grade Level: maturity level for knowledge  
- Medium: language of the course 
- Topic: detail of the concepts 

```

A user can select one or more category amongst the defined category.

For example, for the organization ABC organization the framework name is ABC and code as abc1; the category selected is **Subject** and the label is modified as **Resources** which defines the various water resources and contains the terms as Ground Water, Spring, Surface Water and so on.

#### Prerequisites <a href="#prerequisites" id="prerequisites"></a>

1. &#x20;

   An intialized Sunbird instance with channel
2. &#x20;

   API Key to access Sunbird APIs. To create an API key refer [How to generate a Sunbird API key](/learn/product-and-developer-guide/player/telemetry-events/generate-api-keys)
3. &#x20;

   Software that can make API calls like curl or [POSTMAN](https://www.getpostman.com/docs/v6/postman/api_documentation/intro_to_api_documentation)
4. &#x20;

   Onboarding the following with access to the API

   * Admin user
   * Individual user
   * Individual Organization access
   * Map users to the organization
5. &#x20;

   Access to [Framework API](https://documenter.getpostman.com/view/25463377/2s8ZDa32ay#2985d446-cd84-497a-b7dd-d965be66c6bf)

#### Taskflow <a href="#taskflow" id="taskflow"></a>

The sequence of tasks the organization administrator follows to create a framework includes:

**Create Framework**

1. &#x20;

   Use the [Create Framework API](https://documenter.getpostman.com/view/25463377/2s8ZDa32ay#1114f15b-a5af-44bc-a390-004b35d25efd), to create a new framework. Specify values for the parameters in the request body of the API. Following is an example of request body for creating a framework, the sample values provided in the request body are indicative:
2. &#x20;

   Path for creating the Framework: `/framework/v1/create`

**Request Body to Create Framework**

To retrieve the channels for the request parameter, use [List Channel API](https://documenter.getpostman.com/view/25463377/2s8ZDa32ay#693a9b1f-4eb3-4241-9396-5bd9a4c5266c)

```
  {
"request": {
    "framework": {
        "name": "ABC",
        "code": "abc1",
        "description": "Framework for ABC Management",
        "translations": {"hi":"ABC-अनुवाद","ta":"ABC மொழிபெயர்ப்பு"},
        "type": "TPD",
        }
    }
} 

```

**Description of Parameters**

* Name: The name of the framework as provided by the organization
* Code: A user defined value that is used as the framework identifier
* Description: Describes the framework
* Translations: Enables framework in different languages
* Type: defines the type of content

**Response Body to Create Framework**

```
  {
"responseCode": "OK",
"result": {
    "framework": {
        "identifier": "abc1",
        "code": "abc1",
        "translations": "{\"hi\":\"ABC-अनुवाद\",\"ta\":\"ABC மொழிபெயர்ப்பு\"}",
        "name": "ABC",
        "description": "Framework for ABC Management",
        "type": "",
        "objectType": "Framework"
        }
    }
}

```

**Create Category**

1. Use the [Add Category API](https://documenter.getpostman.com/view/25463377/2s8ZDa32ay#3fa134ba-a261-4c2c-98bb-4fad8e8678d3), to create a new category in the framework.

> Note: You must send a request to Sunbird Team for creating new category.

The sample values provided in the request body are indicative. The API describes the procedure to change the label(resources) of an existing category (subject):

1. Path for creating category: `/framework/v1/category/create?framework=abc1`

**Request Body to Create Categories**

```
  {
"request": {
    "category":{
        "name":"resources",
        "description":"Subject is changed to Resources",
        "code":"subject"
        }
    }
}

```

**Response Body to Create Categories**

```
  {
    "responseCode": "OK",
    "result": {
        "node_id": "abc_subject",
        "versionKey": "1535716551605"
        }
}

```

**Create a Term**

1. &#x20;

   Use the [Add Term API](https://documenter.getpostman.com/view/25463377/2s8ZDa32ay#43c4fb52-a4d6-486c-beec-6c262571bf4a), to create a new term in the category. The categories can be retrieved and listed using [Fetch API](https://documenter.getpostman.com/view/25463377/2s8ZDa32ay#ad0a76cb-4e31-4a8c-b472-de365af2de11). The sample values provided in the request body are indicative.
2. &#x20;

   Path for creating category: `/framework/v1/term/create?framework=abc1&category=subject`

**Request Body to Add Terms**

```
  {
"request": {
    "term": [
        {
        "code": "river",
        "name": "River",
        "description":"Describes River"
        },
        {
        "code": "sea",
        "name": "Sea",
        "description":"Describes Sea"
        }
        ]
    }
}

```

**Response Body to Add Terms**

```
  {
"responseCode": "OK",
"result": {
    "node_id": [
        "abc1_subject_river",
        "abc1_subject_sea"
        ]
    }
}

```

#### Concepts Covered <a href="#concepts-covered" id="concepts-covered"></a>

**Framework**- A structure designed to define the scope of something. On Sunbird, the framework is defined through a string of vocabularies

#### Additional Topics <a href="#additional-topics" id="additional-topics"></a>

[How do I seed a framework](/learn/product-and-developer-guide/taxonomy-and-tagging/framework-service/faqs/add-content-to-framework)


# Add Content to Framework

ABC organization, is a global conglomerate that works in the domain of education and collaborates with different institutions, NGOs and academicians around the world. The primary vision of organizing and enabling seamless discoverability of the content, they decide to implement a framework. As in the process, a framework is already created which is empty. Subsequently, the users must to be able to assign group or categorise programs according to industry, condition, specialty and focus. This information will be used to track against our key condition growth goals, grant and other reporting, and for research and evaluation purposes

* Content needs to be categorized. Lectures, case presentations, and supplemental documents need to be labeled so they can be added to categories related to label.
* New programs in existing topic areas should be able to easily find appropriate top-rated lectures to add to their sessions.

With huge resource library and based on ABC organizations decision, they want to classify their content based on categories as and subcategories. The framework needs to be seeded as per their proposed classification.

| FRAMEWORK NAME | CATEGORIES            | TERMS                               |
| -------------- | --------------------- | ----------------------------------- |
| ABC            | Resources             | Ground Water, Spring, Surface Water |
|                | Governance            | Ground Water, Spring, Surface Water |
|                | Measurement & Mapping | Ground Water, Spring, Surface Water |
|                | Funds                 | State, Central, Global              |
|                | Management            | Ground Water, Spring, Surface Water |

ABC, may choose a predefined category and associate it to their own framework. The categories in the framework has terms associated with it. These terms are relevant to the created framework and can be created by the organization.

After you create a framework, it must be seeded with the required data classified under different components such as:

* Categories
* Terms\
  Once the framework is successfully seeded, then it must be associating with terms and categories.

<figure><img src="/files/SZytATkh377im8WNlAn1" alt=""><figcaption></figcaption></figure>

> **Note**: It is recommended that there is a preplanned classification of content and their associations, this ensures that the framework is usable across the system.

#### Prerequisites <a href="#prerequisites" id="prerequisites"></a>

1. &#x20;

   An intialized Sunbird instance with channel
2. &#x20;

   API Key to access Sunbird APIs. To create an API key refer [How to generate a Sunbird API key](/learn/product-and-developer-guide/player/telemetry-events/generate-api-keys)
3. &#x20;

   Software that can make API calls like curl or [POSTMAN](https://www.getpostman.com/docs/v6/postman/api_documentation/intro_to_api_documentation)
4. &#x20;

   Onboarding the following with access to the API

   * Admin user
   * Individual User
   * Individual Organization access
   * Map users to the organization
5. &#x20;

   Access to [Framework API](https://documenter.getpostman.com/view/25463377/2s8ZDa32ay#2985d446-cd84-497a-b7dd-d965be66c6bf)
6. &#x20;

   Follow the steps as mentioned in [Using POSTMAN](https://www.getpostman.com/docs/v6/postman/api_documentation/intro_to_api_documentation) section to execute the Create Term API

#### Taskflow <a href="#taskflow" id="taskflow"></a>

In this context, the category objects forms the master of all categories and can be inherited by any framework. Each master list category has the list of all possible category values. You can either choose to use the default values for a category of your framework or override them as per the framework context using the appropriate API.

For example, for ABC organization the framework name is ABC and code as abc1; select the category as subject and change the label as Resource type which defines the various water resources and contains the terms as rain water, lake, ponds and so on.

A term is created for each value of a category instance: Terms are used to tag content and other platform objects. The order of terms within a category is defined using the sequence relation between category instance and the term in the request payload of creating term API.

The following are the various properties associated with each term:

* name: name of the term
* code: unique code of the term, which will be validated from master category
* category: category of the term
* translations: translations for the term in different languages
* index: order of display of the term
* description: description of the term

Each term can have relationship with framework category and terms:

* categories: list of framework category
* parents: list of parent term
* children: list of child terms
* associations: list of terms associated from other the other category

#### Adding Category <a href="#adding-category" id="adding-category"></a>

To add a category follow these steps:

1. Check for the existing categories, to do so use [Fetch Category API](https://documenter.getpostman.com/view/25463377/2s8ZDa32ay#b0f45dd1-dd24-47d5-8800-e544a2cf7d50) For your reference, the following is the list of default categories:
   * class
   * medium
   * subject
   * gradelevel
   * topic
2. Create a new category by using [Create category API](https://documenter.getpostman.com/view/25463377/2s8ZDa32ay#7b07da54-506c-410e-a263-63d3b5522f38), ensure to provide the appropriate value for “code” parameter in the request payload. The code parameter inherits the master category schema.&#x20;

   > **Note**: You can only create a new category using any of the available master list categories. If you want to create a new master category, send an email to <support@sunbird.org>
3. &#x20;

   Provide the valid input for the query parameters **framework**. Append the parameter to the endpoint request URI while you are sending the API request
4. Also, provide the appropriate values for the request body parameters in the payload

**Request Body for creating framework category:**

1. &#x20;

   Path for creating framework : `POST: /framework/v1/category/create?framework=abc1`

   &#x20;

   { “request”: { “category”:{ “name”:”Resource”, “description”:”Resource category of the framework”, “code”:”subject”, “translations”: “{"en":"resource"}” } } }

**Response Body**

```
  {
    "id": "api.category.create",
    "ver": "1.0",
    "ts": "2018-11-19T11:00:57.914Z",
    "params": {
        "resmsgid": "64b331a0-ebea-11e8-8676-f72d022164ed",
        "msgid": "649b63e0-ebea-11e8-b107-49a5bcd087db",
        "status": "successful",
        "err": null,
        "errmsg": null
    },
    "responseCode": "OK",
    "result": {
        "node_id": "abc1_subject",
        "versionKey": "1542625257776"
    }
}

```

**Description of Parameters**

Name: name of the category Code: unique code of the category. This gets validated from the mater category Description: Description of the category Translations: Depicts the transalation of the category in different language

Other operation that you can perform on the categories under a framework are as follows:

[Fetch](https://documenter.getpostman.com/view/25463377/2s8ZDa32ay#ad0a76cb-4e31-4a8c-b472-de365af2de11) [Update](https://documenter.getpostman.com/view/25463377/2s8ZDa32ay#f16ade99-c9cd-4055-a251-5d8c996e3258) [Search](https://documenter.getpostman.com/view/25463377/2s8ZDa32ay#1770618a-936f-4014-be98-25dd34fa96e6)

#### Adding Terms <a href="#adding-terms" id="adding-terms"></a>

1. To create a new term refer to [Create Term API](https://documenter.getpostman.com/view/25463377/2s8ZDa32ay#43c4fb52-a4d6-486c-beec-6c262571bf4a). Given below is an example of request body for creating terms

The categories can be retrieved and listed using [Fetch API](https://documenter.getpostman.com/view/25463377/2s8ZDa32ay#ad0a76cb-4e31-4a8c-b472-de365af2de11)

1. &#x20;

   Provide the valid input for the query parameters “framework” and “category”. Append these parameters to the endpoint request URL while you are sending the API request.
2. &#x20;

   Provide the appropriate values for the request body parameters in the payload.

> **Note**: The sample values provided in the request body are indicative.

**Request Body for creating Terms**

`POST: /framework/v1/term/create?framework=abc1&category=subject`

```
  {
    "request": {
        "term": [
            {
                "code": "river",
                "name": "River",
                "description":"Describes River",
                "translations": "{\"en\":\"river\"}"
            },
            {
                "code": "sea",
                "name": "Sea",
                "description":"Describes Sea",
                "translations": "{\"en\":\"sea\"}"
            }
        ]
    }
}

```

**Response Body**

```
  {
    "id": "api.term.create",
    "ver": "1.0",
    "ts": "2018-11-19T11:21:37.973Z",
    "params": {
        "resmsgid": "47d52e50-ebed-11e8-8676-f72d022164ed",
        "msgid": "47ba5350-ebed-11e8-b107-49a5bcd087db",
        "status": "successful",
        "err": null,
        "errmsg": null
    },
    "responseCode": "OK",
    "result": {
        "node_id": [
            "abc1_subject_river",
            "abc1_subject_sea"
        ]
    }
}  

```

**Description of Parameters**

Code: Unique value that is used for generating term identifier. Description: Description of the term Name: Name of the terms Translations: Transalation of the category in different language

Other operations that can be performed on terms of a category within a framework are as follows:

[Fetch](https://documenter.getpostman.com/view/25463377/2s8ZDa32ay#ad0a76cb-4e31-4a8c-b472-de365af2de11)

[Update](https://documenter.getpostman.com/view/25463377/2s8ZDa32ay#f16ade99-c9cd-4055-a251-5d8c996e3258)

[Search](https://documenter.getpostman.com/view/25463377/2s8ZDa32ay#1770618a-936f-4014-be98-25dd34fa96e6)

#### Publishing Framework <a href="#publishing-framework" id="publishing-framework"></a>

1. &#x20;

   Once a framework is associated with its category and terms, it has to be published. Until it is published, the changes will not be available in the framework get API call.
2. &#x20;

   Given below is the publish framework API sample request and response. Framework has to be passed as a query parameter and the request body should be blank.

> **Note**: The sample values provided in the request body are indicative.

**Request Body for creating Terms**

`POST: /framework/v1/publish/abc1`

```
  {}


```

`Response Body`

```
  {
    "id": "api.framework.publish",
    "ver": "1.0",
    "ts": "2018-11-20T15:23:31.724Z",
    "params": {
        "resmsgid": "3d1d94c0-ecd8-11e8-8ee7-23985149ff3f",
        "msgid": "3d1b23c0-ecd8-11e8-b9fd-f7a268445f06",
        "status": "successful",
        "err": null,
        "errmsg": null
    },
    "responseCode": "OK",
    "result": {
        "publishStatus": "Publish Operation for Framework Id 'abc1' Started Successfully!"
    }
}

```

Note: Once the framework is published, all the changes will be available in the framework get API.

### Concepts Covered <a href="#concepts-covered" id="concepts-covered"></a>

[How do I create a framework](/learn/product-and-developer-guide/taxonomy-and-tagging/framework-service/faqs/create-framework)


# Object Category APIs

### Category

This represents the actual items that are defined and created based on different use cases. Unlike an Asset, which is a core entity of the system, a category is just a “label” tagged to an Asset and defines and configure a specific set of properties and behaviours. These properties are a subset of those supported by the asset. Hence, categories are completely driven by configuration, without any category-specific logic implemented in the code.

Example from education - Exam Question paper, Practice Worksheet, Quiz each one is a category of the asset type Question set Analogous example from the real-world - A Shoe, Sandal, Flip-flops each one is a category of the asset type footwear Following pages provide details of the various types of asset that are part of sunbird and a default set of categories configured.

### References

#### Confluence wikis

{% embed url="<https://project-sunbird.atlassian.net/wiki/spaces/CO/pages/1572339732/Categories>" %}


# Architecture

The below diagram represents the components involved and their arrangement in a Taxonomy service to Serve **Object Category APIs**

<figure><img src="/files/lMHnNGHZTXfDnm9gEbIA" alt=""><figcaption></figcaption></figure>


# Code Structure

### Repository

Please refer to the provided link for the content APIs code.

{% embed url="<https://github.com/Sunbird-Knowlg/knowledge-platform/tree/release-5.6.0/taxonomy-api>" %}

### Folders structure

#### Taxonomy Actors

Within this module, the functionality to handle concurrency and scalability is implemented using AKKA actors.

#### Taxonomy Service

By utilizing the Play framework, this module ensures a streamlined and organized approach to developing RESTful APIs. It simplifies the process of defining routes and implementing controller actions, allowing for efficient handling of incoming requests and consistent responses. The Play framework's emphasis on clean and concise code contributes to the overall maintainability and scalability of the application.


# Schemas

ObjectCategory Schema: <https://github.com/project-sunbird/knowledge-platform/tree/master/schemas/objectcategory/1.0>

ObjectCategoryDefinition Schema: <https://github.com/project-sunbird/knowledge-platform/tree/master/schemas/objectcategorydefinition/1.0>


# APIs

The Object Category Definition API resourcses mainly allows you to set the rules for creating different type of objects for a particular category.

[Object Category APIs](http://docs.sunbird.org/latest/apis/objectcategory/)

* Object Category [Create](https://documenter.getpostman.com/view/25463377/2s9YC4VDL8#f2099474-351a-4418-8b69-db732a62cd11), [Read](https://documenter.getpostman.com/view/25463377/2s9YC4VDL8#33526235-299f-427b-8a71-e92515e1da7f) and [Update](https://documenter.getpostman.com/view/25463377/2s9YC4VDL8#c3bd3f5c-50df-4cb9-af85-38da0235163b)
* Object Category Defintion [Create](https://documenter.getpostman.com/view/25463377/2s9YC4VDL8#f6cab966-b9fe-40cf-90fd-beeeb7389914), [Read](https://documenter.getpostman.com/view/25463377/2s9YC4VDL8#d052f3b5-5b8d-4e76-a40f-92398376bec2) and [Update](https://documenter.getpostman.com/view/25463377/2s9YC4VDL8#22901edc-b0a5-454b-8a5b-a349e904c83e)

{% embed url="<https://project-sunbird.atlassian.net/wiki/spaces/User/pages/1818722322/Category+Definition+API+Specification>" %}


# Jobs

Flink jobs in the Knowledge Platform act as the backbone of data management and content processing, enabling seamless workflows and ensuring that content is efficiently organized, processed, and made available to users. These automated processes play a vital role in maintaining a robust and scalable platform capable of handling diverse data and content requirements.&#x20;

1. Audit Event Generator


# Audit event generator

### :stars: audit-event-generator:

The Job utilizes the neo4j mutation data to generate AUDIT events for the Knowlg objects, following the [Sunbird Telemetry specification](https://telemetry.sunbird.org/learn/v3_event_details). These AUDIT events are specifically structured and formatted to adhere to the telemetry standards defined by Sunbird.

By generating these AUDIT events, the Job creates a valuable data source that can be consumed by various data analytics jobs. These data analytics jobs leverage the AUDIT events to perform in-depth analysis, monitoring, and reporting on the activities and changes related to the Knowlg objects within the system.

The AUDIT events provide valuable insights into the life-cycle and modifications of Knowlg objects, enabling data analysts to track and understand user interactions, content updates, and other relevant events. This data-driven approach empowers data analytics teams to derive meaningful patterns, trends, and metrics, facilitating data-driven decision-making and continuous improvement of the Knowlg platform.

In summary, the Job leverages neo4j mutation data to generate AUDIT events that align with Sunbird Telemetry specifications. These events serve as a valuable data source for data analytics jobs, enabling detailed analysis and monitoring of Knowlg objects and supporting data-driven insights to enhance the platform's performance and user experience.

<figure><img src="/files/HI2FDP38xkiNMWoVvddu" alt=""><figcaption><p>audit-event-generator</p></figcaption></figure>

### Code:

{% embed url="<https://github.com/Sunbird-Knowlg/knowledge-platform-jobs/tree/release-5.5.0/audit-event-generator>" %}

### Configuration:

During the deployment process, the configuration for all knowledge-platform-jobs is sourced from the sunbird-learning-platform repository. On the other hand, for local setups, the configuration is taken from the respective job folders within the knowledge-platform-jobs repository.

**Kafka Topic:**

```
kafka {
      input.topic = "{{ env_name }}.learning.graph.events"
      groupId = "{{ env_name }}-audit-event-generator-group"
      output.topic = "{{ env_name }}.telemetry.raw"
}
```

**Job configuration variables:**

<table><thead><tr><th width="227.3754826523833">Variable</th><th>Purpose</th></tr></thead><tbody><tr><td>schema.basepath*</td><td>Used to access object schema files basepath that are hosted publicly using which object schema file path can be constructed. (Basepath Example: <a href="https://sunbirddev.blob.core.windows.net/sunbird-dial-dev/schemas/local">https://sunbirddev.blob.core.windows.net/sunbird-dial-dev/schemas/local</a>, Object schema file path example: <a href="https://sunbirddev.blob.core.windows.net/sunbird-dial-dev/schemas/local/content/schema.json">https://sunbirddev.blob.core.windows.net/sunbird-dial-dev/schemas/local/content/schema.json</a>)</td></tr><tr><td>channel.default*</td><td>Used to generate context information.</td></tr></tbody></table>

**Sample Kafka event:**

```
{
  "ets": 1649228985316,
  "channel": "01269878797503692810",
  "transactionData": {
    "properties": {
      "childNodes": {
        "ov": [
          "do_213509990427254784111670",
          "do_21351048342788505611737",
          "do_21351048359284736011739"
        ],
        "nv": [
          "do_213509990427254784111670",
          "do_21351048342788505611737",
          "do_21351048359284736011739",
          "do_2134250082225192961958"
        ]
      },
      "lastUpdatedOn": {
        "ov": "2022-04-06T07:09:14.653+0000",
        "nv": "2022-04-06T07:09:45.288+0000"
      },
      "versionKey": {
        "ov": "1649228954653",
        "nv": "1649228985288"
      }
    }
  },
  "mid": "1f33cab7-a8ba-4245-87cb-a11ab648d9c8",
  "label": "Timer Course",
  "nodeType": "DATA_NODE",
  "userId": "ANONYMOUS",
  "createdOn": "2022-04-06T07:09:45.316+0000",
  "objectType": "Collection",
  "nodeUniqueId": "do_21351048259398041611736",
  "requestId": null,
  "operationType": "UPDATE",
  "nodeGraphId": 1149046,
  "graphId": "domain"
}
```


# Configuration

There are no service specific configuration variables.


# FAQs

This page answers frequently asked questions about Object Category and Object Category Definition.

### How to create an object category definition?

In order to [create object category definition](http://docs.sunbird.org/latest/apis/objectcategory/#operation/Create%20Object%20Category%20Definition), master category of the primary category should be created first.

### Can I change datatype of a property using object category definition?

No, datatype of a property cannot be changed. Only, property value range list and default value of a property can be updated using the [object category definition API](http://docs.sunbird.org/latest/apis/objectcategory/#operation/Update%20Object%20Category%20Definition).

### Is it mandatory to mention all properties of object schema during object category definition creation?

No, only necessary properties to be overriden can be mentioned.

### Can I add new properties to object schema using object category definition instead of schema.json?

Yes, new properties can be added to object category definition.

### How to fetch list of primaryCategories defined/configured in the System?

List of configured primary categories can be fetched using '[Composite Search API](http://docs.sunbird.org/latest/apis/searchapi/#operation/Composite%20Search)'.\
`{ "request": { "filters": { "status": [], "objectType":["ObjectCategoryDefintion","ObjectCategory"] }, "limit": 100, "sortby": "Desc" } }`


# DIAL Service

Sunbird DIAL powers the discovery of learning Assets and certificates and bridge the physical to the digital journey of users. The Service is a set of API that enables create, retrieve, delete, publis

DIAL refers to *Digital Infrastructure for Augmented learning*. Sunbird Knowlg uses the [DIAL spec](https://github.com/sunbird-specs/DIAL-specs/blob/main/README.md) to power the phygital discovery of assets. It provides tools for DIAL code management. The DIAL powers the discovery of digital resources using physical artefacts like QR codes, can be extended to other physical artefacts. The DIAL code does the loose binding of digital assets with physical artefacts.&#x20;

In practice, physical artefacts will be published once, serving as coordinate to the discovery of digital resources. Digital resources can be published and modified later multiple times, this is done to improve digital resources. In short, the DIAL code serves as a coordinate for digital resources discovery, where the digital resources can be modified, improved and personalised at runtime.

### DIAL code usage workflow

* DIAL code acts as a bridge between physical and digital artefacts
* DIAL code is generated and linked to a folder in a collection
* User scans the DIAL code and accesses all the linked assets in that folder
* This enables easy extension and modification of assets accessed through a DIAL code

![DIAL code  as coordinate to discover digital coordinates](/files/FD68djuV7vKK5Rx04JBO)

### DIAL Spec

{% embed url="<https://github.com/sunbird-specs/DIAL-specs/blob/main/README.md>" %}


# Architecture

<figure><img src="/files/KvhkBDzPxTyayOKPNrsd" alt=""><figcaption><p>DIAL Architecture</p></figcaption></figure>

## Flow-diagram

<figure><img src="/files/ikpKzoRAI8usneoDQcq1" alt=""><figcaption></figcaption></figure>


# APIs

### [DIAL Code APIs](http://docs.sunbird.org/latest/apis/dialapi/#tag/DIAL-APIs)

* DIAL Code [Generate](https://documenter.getpostman.com/view/25463377/2s9YC4VDLC#6d8a2a5e-9d24-457b-b9b9-3eb9ac937292), [Read](https://documenter.getpostman.com/view/25463377/2s9YC4VDLC#2b6ffde1-b138-4f1f-ae56-e68484e2d885), [Update](https://documenter.getpostman.com/view/25463377/2s9YC4VDLC#94a27f07-46ec-4e7b-86bd-33a02e487f0e) and [Publish](https://documenter.getpostman.com/view/25463377/2s9YC4VDLC#fb3415d2-5af4-48b1-860a-00de6cc6105b)
* Publisher [Create](https://documenter.getpostman.com/view/25463377/2s9YC4VDLC#e9647b6d-4ea9-4a34-b18d-0c97d8a42c78), [Read](https://documenter.getpostman.com/view/25463377/2s9YC4VDLC#fdb991c3-ace4-4ca3-8200-8efa82934713) and [Update](https://documenter.getpostman.com/view/25463377/2s9YC4VDLC#c7972c23-b24e-4f68-bec5-b253ab82e678)
* DIAL Code [Reserve](https://documenter.getpostman.com/view/25463377/2s9YC4VDL4#acf6c9ab-d485-4738-baa8-2c587717f84e) and [Linking](https://documenter.getpostman.com/view/25463377/2s9YC4VDL4#d323df4a-158e-4776-ac40-f126c871e1b6) to Collection
* [QR image download for DIAL Codes](https://documenter.getpostman.com/view/25463377/2s935hR7AM#c70aa3ea-78c1-46ee-9ffe-0d194ff5c711)
* DIAL Code [Search](https://documenter.getpostman.com/view/25463377/2s9YC4VDLC#71b2a380-cc5f-4653-a898-27898390297f) and [List](https://documenter.getpostman.com/view/25463377/2s9YC4VDLC#3b3a3f2b-2376-4a8b-983b-04be290d73f7)


# Jobs

### :stars: qrcode-image-generator:

The Job is utilized for the purpose of generating QR Code images specifically for the reserved DIAL codes of a collection. This generation process is initiated using the process Id that is generated when the DIAL code reserve API is invoked.

Once the DIAL codes are reserved for the collection, the Job comes into action, leveraging the associated process Id to create QR Code images. These QR Code images are then linked to the respective reserved DIAL codes, providing a quick and accessible method for identifying and accessing the collection.

By employing the Job in this manner, the platform ensures that each reserved DIAL code is visually represented through QR Code images, facilitating ease of use and enhancing the collection's traceability and accessibility. This process enables users to conveniently scan the QR Code to obtain information and interact with the associated collection, promoting seamless user experiences and efficient content management within the platform.

<figure><img src="/files/W0TlibY1deKsLtRGQRah" alt=""><figcaption><p>qrcode-image-generator</p></figcaption></figure>

### Code:

{% embed url="<https://github.com/Sunbird-Knowlg/knowledge-platform-jobs/tree/release-5.5.0/qrcode-image-generator>" %}

### Configuration:

During the deployment process, the configuration for all knowledge-platform-jobs is sourced from the sunbird-learning-platform repository. On the other hand, for local setups, the configuration is taken from the respective job folders within the knowledge-platform-jobs repository.

**Kafka Topic:**

```
kafka {
      input.topic = "{{ env_name }}.qrimage.request"
      groupId = "{{ env_name }}-qrcode-image-generator-group"
    }
```

**Job configuration variables:**

| Variable              | Purpose                                                                                                                   |
| --------------------- | ------------------------------------------------------------------------------------------------------------------------- |
| lp.tmp.file.location  | <p>Used to specify machine directory where the qrcode images are to be packaged at.<br><em>Default value:</em> "/tmp"</p> |
| qr.image.imageFormat  | <p>Used to specify qrcode image file format (Example: png)<br><em>Default value:</em> "png"</p>                           |
| qr.image.bottomMargin | <p>Used to specify qrcode image bottom margin.<br><em>Default value:</em> 0</p>                                           |
| qr.image.margin       | <p>Used to specify qrcode image margin.<br><em>Default value:</em> 1</p>                                                  |

**Sample Kafka event:**

```
{
  "eid": "BE_QR_IMAGE_GENERATOR",
  "processId": "3b369c35-2b79-40ec-a3e0-3d0306fc0388",
  "objectId":"contentid/channel",
  "dialcodes": [
    {
      "data": "https://diksha.gov.in/dial/ABCDEF",
      "text": "ABCDEF",
      "id": "ABCDEF_1543568148",
      "location":"cloudPublicUrl"
    },
    {
      "data": "https://diksha.gov.in/dial/123456",
      "text": "123456",
      "id": "123456_1543568148"
    }
  ],
  "storage": {
    "container": "dial",
    "path": "channel/publisher/",
    "fileName": "do_112636984058314752121_Medium_Grade_Subject_timestamp"
  },
  "config": {
    "errorCorrectionLevel": "H",
    "pixelsPerBlock": 2,
    "qrCodeMargin": 3,
    "qrCodeMarginBottom": 1,
    "textFontName": "Verdana",
    "textFontSize": 11,
    "textCharacterSpacing": 0.1,
    "imageFormat": "png",
    "colourModel": "Grayscale",
    "imageBorderSize": 1,
    "imageMargin": 1

```


# Configuration

DIAL service file configuration is available at <https://github.com/project-sunbird/sunbird-dial-service/blob/master/conf/application.conf>

| Variable             | Purpose                                                                                                                                                                                                                    |
| -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| dialcode.strip.chars | <p>DIAL Codes are generated using AlphaNumeric characters (exculding 'O'). This variable is used to remove undesired leading character from the generated DIAL code. </p><p><em>Default value: 0</em> (zero)</p>           |
| dialcode.length      | <p>This variable is used to specify the length of DIAL code to be generated.<br><em>Default value: 6</em></p>                                                                                                              |
| jsonld.basepath      | base path of the jsonld.type folder contents                                                                                                                                                                               |
| jsonld.type          | 'folder name' containing jsonld schema vocabulary and context json files to be referred to.                                                                                                                                |
| jsonld.localPath     | server directory to which the 'contextValidation.json' file is to be downloaded.                                                                                                                                           |
| jsonld.ttl           | file caching refresh time of 'contextValidation.json'                                                                                                                                                                      |
| jsonld.sb\_schema    | Sunbird vocabulary, 'schema.jsonld' file path whose reference is to be validated in the custom 'context.json'. Mupltiple vocabulary file paths can be mentioned in order to verify if the custom context.json has extended |
| dial\_id             | dial code URL to be returned in the dial code context during context read for '@id'                                                                                                                                        |
| dial\_type           | 'type' value to be shown during the dial code context read for '@type'.                                                                                                                                                    |
|                      |                                                                                                                                                                                                                            |
|                      |                                                                                                                                                                                                                            |


# FAQs

This page answers frequently asked questions about DIAL code service

How to create a DIAL code?

You should [create a publisher](https://documenter.getpostman.com/view/25463377/2s935hR7AM#81d8ee57-d567-4e62-829e-d3ee7c5671cf) in order to [create/generate a DIAL code](https://documenter.getpostman.com/view/25463377/2s935hR7AM#dc8b03d5-95e3-4314-a78a-ab61e9ebaa4e).

### How to generate QR Code images of DIAL codes?

You have to [reserve DIAL codes](https://documenter.getpostman.com/view/25463377/2s935hRnae#cb3a2a6e-2e4c-4a13-9cde-5abf9b848baa) for a textbook before downloading the QR Code images of the reserved DIAL codes. Once, the DIAL codes are reserved, you can [download QR code images](https://documenter.getpostman.com/view/25463377/2s935hR7AM#c70aa3ea-78c1-46ee-9ffe-0d194ff5c711) using the "processId" returned in the response of 'Reserve DIAL codes API'.

### How to link a DIAL code to content?

DIAL codes can only be linked to Collection and Collection Units at present. However, contents can be added to collection units and hence, make contents indirectly linked to DIAL codes.

Please follow this [link](/learn/product-and-developer-guide/dialcode/faqs/link-dial-code-to-a-book).

### How to check if a QR code is linked to a content?

The QR code image generated by the Sunbird-Ed will internally have a unique DIAL code linked to it. The URL format of the QR code is `<base_path>/<DIAL Code>`.

Below are the steps to extract the METADATA behind the QR code:

1. Extract the DIAL code from the URL of the QR code.
2. Use the DIAL code and trigger [content search API](https://documenter.getpostman.com/view/25463377/2s8ZDa3MP7#2c1683e9-8942-46b1-8177-eaa8ad5e95f4) with the below request body.

```
{
    "request": {
        "filters": {
            "visibility": ["Default" ,"Parent"],
            "dialcodes": "<DIAL Code>"
        },
        "mode": "collection"
    }
}
```

Content Search API is a public endpoint. With the above request body, the API will return METADATA of the contents which are linked to the specific QR code (or DIAL code).

In the API response,

"collections" block gives the information of the **TextBook** that contains the 'TextBookUnit' to which DIAL Code is tagged to. "identifier" - id of the TextBook, "name" - name of the TextBook, "board" - board value to which TextBook is tagged to. similarly, "medium", "gradeLevel" (Class) and "subject" values.

"content" block gives the information of the **TextBook Unit** DIAL Code is tagged to. "identifier" - id of the TextBook Unit, "name" - name of the TextBook Unit, "topic" - topics/concepts to which Unit is tagged with, **"children" - contents which are part of the TextBook Unit.**

### **How DIAL code search works?**

You can use [search DIAL code API](https://documenter.getpostman.com/view/25463377/2s935hR7AM#d8bad7a5-ee3c-411a-bd85-e7cbb89ae9d8) to fetch list of DIAL codes generated by a publisher of the tenant or to get the list of DIAL codes generated as part of a batchCode.

### How to define our own vocabulary to the dial code context?

You can add a new folder parallel to 'sb' under 'jsonld-schema' folder and mention the folder name in configuration: 'jsonld.type'. Folder can have 'schema.jsonld', 'context.json'  'contextValidation.json' files.

###


# Link DIAL Code to a Book

An educational institution XYZ, with over three thousand students, is spread across three locations. XYZ institute has decided to use Sunbird for its digital learning solution to provide more scalable and effective education to its students.

An energized book contains a QR code or a QR Code with a DIAL code in it. The students can scan the QR code using the Sunbird mobile app (Android 1.7.0 onwards) on their smartphone or other electronic devices like a laptop (using chrome browser) or a tablet. Scanning QR code provides a user the web links of related reading content. It helps the students to access the more content easily and understand the topics better.

### Intended Audience <a href="#intended-audience" id="intended-audience"></a>

A user with book creation access

### Overview <a href="#overview" id="overview"></a>

A book creator can tag various pages and topics with DIAL code as required. Using the DIAL codes, a book’s content can be converted into digital content. It provides the students easy access to content by transforming physical content material into digital content.

### Prerequisites <a href="#prerequisites" id="prerequisites"></a>

1. &#x20;

   API Key to access Sunbird APIs. To create an API key refer [How to generate a  API key](/learn/product-and-developer-guide/player/telemetry-events/generate-api-keys)
2. &#x20;

   Software that can make API calls like curl or [POSTMAN](https://www.getpostman.com/docs/v6/postman/api_documentation/intro_to_api_documentation)
3. &#x20;

   The root organization and sub-organizations created and their **organsationId** and root organization’s **channel** readily available
4. &#x20;

   The user account created in the root-organization and **userId** readily available
5. &#x20;

   The created users are mapped to the organization and given appropriate rights and permisssions
6. &#x20;

   Access to QR code and DIAL code. By default, any book creator gets access to link and unlink DIAL code
7. &#x20;

   The DIAL code attribute must be configured in the Create Content API

### Taskflow <a href="#taskflow" id="taskflow"></a>

[**Content linking to QR code**](https://documenter.getpostman.com/view/25463377/2s935hRnae#02f47a1c-a56c-4bef-a4ad-51bb8cdb38ba): As a book creator or author, you can create content and associate the QR code and DIAL code to the content. This can be done via API and Sunbird User interface as well. This document describes how to link DIAL code to a book using APIs.

### Presteps to Follow to Before Linking a DIAL Code to a Book <a href="#presteps-to-follow-to-before-linking-a-dial-code-to-a-book" id="presteps-to-follow-to-before-linking-a-dial-code-to-a-book"></a>

Ensure to complete the following before linking DIAL code to a book:

a. [Create Publisher](https://documenter.getpostman.com/view/25463377/2s935hR7AM#81d8ee57-d567-4e62-829e-d3ee7c5671cf)

b. [Generate QR code](https://documenter.getpostman.com/view/25463377/2s935hR7AM#dc8b03d5-95e3-4314-a78a-ab61e9ebaa4e)

a. **Create Publisher**

This API is associated with creating a publisher

* The `dialcode/v1/publisher/create` endpoint executes the “Create Publisher” request based on parameters provided as metadata in the request body
* Required fields cannot be left null or empty

While providing values for the parameters in the request body of the API, it is essential to mention values as mentioned in the following table:

| HEADER PARAMETER | SAMPLE VALUE                                                           | DESCRIPTION                                                                                                                        | IS MANDATORY |
| ---------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ------------ |
| X-Channel-Id     | in.ekstep                                                              | It is a unique Id to identify the root organization to which the publisher has to be created                                       | Yes          |
| Content-Type     | Application/json Multipart/form-data Application/x-www-form-urlencoded | The media type of the resource                                                                                                     | Yes          |
| Authorization    | NA                                                                     | All User APIs require authorization. Raise a request to the administrator for the authorization key. Mention the received key here | Yes          |

**Request Body for create publisher API**

```
    {
      "request": {
          "publisher": {
              "identifier": "skpublisher",
              "name": "SK Publisher"
          }
      }
  }

```

**Response Body of Create Publisher API**

```
    {
    "id": "api.publisher.create",
    "ver": "1.0",
    "ts": "2018-10-04T07:12:47.729Z",
    "params": {
        "resmsgid": "e5b63e10-c7a4-11e8-bbd8-e58670bcc2b7",
        "msgid": "e51fca70-c7a4-11e8-ac7b-7b8f28c2d9c1",
        "status": "successful",
        "err": null,
        "errmsg": null
    },
    "responseCode": "OK",
    "result": {
        "identifier": "skpublisher"
    }
  }

```

b. Generate QR Code

This API is associated with generating DIAL code.

* The `/dialcode/v1/generate` endpoint executes the “Generate DIAL code” request based on parameters provided as metadata in the request body to be replaced by appropriate Id
* Required fields cannot be left null or empty

While providing values for the parameters in the request body of the API, it is essential to mention values as mentioned in the following table:

| HEADER PARAMETER | SAMPLE VALUE                                                           | DESCRIPTION                                                                                                                        | IS MANDATORY |
| ---------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ------------ |
| X-Channel-Id     | in.ekstep                                                              | It is a unique Id to identify the root organization to which the dialcodes have to be generated                                    | Yes          |
| Content-Type     | Application/json Multipart/form-data Application/x-www-form-urlencoded | The media type of the resource                                                                                                     | Yes          |
| Authorization    | NA                                                                     | All User APIs require authorization. Raise a request to the administrator for the authorization key. Mention the received key here | Yes          |

**Request Body of Generate DIAL Code API \*\* :**

```
    {
      "request": {
          "dialcodes": {
              "count": 2,
              "publisher": "skpublisher"
          }
      }
  }

```

**Response Body of Generate DIAL Code API**

```
    {
    "id": "api.dialcode.generate",
    "ver": "2.0",
    "ts": "2017-10-04T10:54:28.916",
    "params": {
        "resmsgid": "dcd64f40-c7c3-11e8-9bfa-fd2e5637008b",
        "msgid": "dc3af9a0-c6c3-11e8-9fb2-b710543e8512",
        "status": "successful",
        "err": null,
        "errmsg": null
    },
    "responseCode": "OK",
    "result": {
        "dialcodes": [
            "QP79LL",
            "WMHNYJ",
        ],
        "count": 2,
        "batchcode": "skpublisher.20181004T106427",
        "publisher": "skpublisher"
    }
  }

```

#### Link DIAL code to content using DIAL API <a href="#link-dial-code-to-content-using-dial-api" id="link-dial-code-to-content-using-dial-api"></a>

This API is associated with linking DIAL code to the content.

* The `/dialcode/v1/content/link` endpoint executes the “Link DIAL code” request based on parameters provided as metadata in the request body.
* Required fields cannot be left null or empty.
* As it is an updated request, whatever the list of dial codes API gets in the request body against any particular content Id or list of content Ids; the API updates the same as content metadata. If API does not get any value in dial code list, it delinks the content from all the existing dial-code by removing dial codes from content metadata.

While providing values for the parameters in the request body of the API, it is essential to mention values as mentioned in the following table:

| HEADER PARAMETER | SAMPLE VALUE                                                           | DESCRIPTION                                                                                                                        | IS MANDATORY |
| ---------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ------------ |
| X-Channel-Id     | in.ekstep                                                              | It is a unique Id to identify the root organization to which the user belongs                                                      | Yes          |
| Content-Type     | Application/json Multipart/form-data Application/x-www-form-urlencoded | The media type of the resource                                                                                                     | Yes          |
| Authorization    | NA                                                                     | All User APIs require authorization. Raise a request to the administrator for the authorization key. Mention the received key here | Yes          |

**Request Body Parameter**

| REQUEST BODY PARAMETER | SAMPLE VALUE     | DESCRIPTION                                                 | IS MANDATORY |
| ---------------------- | ---------------- | ----------------------------------------------------------- | ------------ |
| content.identifier     | “do\_3010101010” | List of content identifiers that are linked with dial codes | Yes          |
| content.dialcode       | “A6GHY”          | List of dial codes to which identifiers will be linked      | Yes          |

Link DIAL code API End point: `POST: /dialcode/v1/content/link`

**Request Body for linking DIAL code API**

```
    {
    "request": {
      "content":
        {
          "identifier": "do_3010101011",
          "dialcode": "3R3DSS"
        }
    }
  }

```

**Response Body for linking DIAL code API**

{ “id”: “sunbird.content.dialcode.link”, “ver”: “3.0”, “ts”: “2018-09-18T09:15:01ZZ” “, “params”: { “resmsgid”: “287298eb-ac54-4c9a-bf98-c0b1b1d4732e”, “msgid”: “null”, “err”: “null”, “status”: “successful”, “errmsg”: “null” }, “responseCode”: “OK”, “result”: { “node\_id”: “do\_3010101011”, “versionKey”: “1542625257776” } }

The [Link DIAL Code](https://documenter.getpostman.com/view/25463377/2s935hRnae#02f47a1c-a56c-4bef-a4ad-51bb8cdb38ba) (Digital Infrastructure for Augmented Learning) API resources are used for energizing the textbooks.

For more information, refer to [Content linking ](https://documenter.getpostman.com/view/25463377/2s935hRnae#02f47a1c-a56c-4bef-a4ad-51bb8cdb38ba)to QR code.

#### Consuming DIAL Code linked content <a href="#consuming-dial-code-linked-content" id="consuming-dial-code-linked-content"></a>

You can consume the content linked with DIAL code using mobile or website

**To consume the content using Sunbird mobile app**:

Scan the QR code using the Sunbird app installed on your mobile

**To consume the content using Sunbird portal:**

Go to <https://play.diksha.gov.in/dialpage/index.html>

Enter the DIAL code (the alphanumeric number) in the **Explore Content Using DIAL Code** field and click on the Search icon

### Concept Covered <a href="#concept-covered" id="concept-covered"></a>

**QR code:** It is a two-dimensional machine-readable barcode that is readable by smartphones and some other electronic devices. It consists of an array of black and white squares, which essentially encode web link as graphics. Users can scan QR code using a smartphone and some other electronic devices.

Discovery of digital content from physical textbooks is made possible by printing a QR code along with DIAL code on books and linking digital teaching and learning content to the QR codes placed in textbooks at a chapter and topic level.

**DIAL Code**: A DIAL code is the 6 digits alphanumeric code embedded with QR code.

**Energized book**: A book that is embedded with QR codes is called Energized book. The energized book serves as the anchor to the reader enabling them to have easy access to digital learning and training material.

#### Related Topic <a href="#related-topic" id="related-topic"></a>

[Update DIAL code](https://documenter.getpostman.com/view/25463377/2s935hR7AM#238b2e6f-3952-423d-8d63-c17d2fea995c)

[Update publisher](https://documenter.getpostman.com/view/25463377/2s935hR7AM#6ece54dd-d4c3-4a67-8b88-a1c0ee9ffb14)

[List DIAL Code](https://documenter.getpostman.com/view/25463377/2s935hR7AM#ef5f57bb-87e8-4dfd-8359-9c7c3c061635)


# Player

Players are embeddable tools which help in rendering the assets. For ex., a video player plays all video content. Below are the players provided by Sunbird Knowlg building block:

<table><thead><tr><th width="171.13336635502452">Content Format</th><th width="261">MIME Type</th><th width="150">Player</th><th>Player v2</th></tr></thead><tbody><tr><td>ECML</td><td>application/vnd.ekstep.ecml-archive</td><td><a href="/pages/OTCAu1m3IYardR8RrR9z">Yes</a></td><td>No</td></tr><tr><td>HTML, H5P</td><td>application/vnd.ekstep.html-archive, application/vnd.ekstep.h5p-archive</td><td><a href="/pages/BvAqlEfBi0IlTd0QJBB5">Yes</a></td><td>No</td></tr><tr><td>PDF</td><td>application/pdf</td><td><a href="/pages/reeZ1fSGEUOVy86qnlVY">Yes</a></td><td><a href="/pages/6055Uettv3Zq10q5Tksu">Yes</a></td></tr><tr><td>Epub</td><td>application/epub</td><td><a href="/pages/NcEw3t0R36JES94LltAc">Yes</a></td><td><a href="/pages/nwCW1yGfo0vdcoXkfimF">Yes</a></td></tr><tr><td>WEBM, MP4</td><td>video/Webm, video/mp4</td><td><a href="/pages/BUq16zWa9350lBgzUHWA">Yes</a></td><td><a href="/pages/SHUgDcquv6V3sxvdCBqc">Yes</a></td></tr><tr><td>YOUTUBE</td><td>video/x-youtube, </td><td><a href="/pages/BUq16zWa9350lBgzUHWA#youtube">Yes</a></td><td>No</td></tr></tbody></table>

### MIME Type

MIME Types defines the what type of the content it is. According to the mimeType you can load the specific [content launcher](/learn/product-and-developer-guide/player/v1/architecture#content-launchers) and play the different types of contents

### Online

Players are capable to rendering the assets online in web browser, mobile app and desktop app using the streaming url

#### Streaming url

Streaming URL is a used to stream the asset online. This streaming Url can be present in content metadata. If the streaming Url is present in metadata, the assets can be play online.

Sample streaming URL

```
metadata: {
    "streamingUrl":"https://sunbirddevmedia-inct.streaming.media.azure.net/9e45c4d8-37bf-430f-a467-388b37075d25/webm1-copy-17.ism/manifest(format=m3u8-aapl-v3)"
}
```

### Offline

Assets can be rendered offline in the player. Only html/h5p player v1 won't support the offline play.&#x20;

Please refer developer doc for [offline telemetry sync](/learn/product-and-developer-guide/player/telemetry-events/offline-telemetry) support


# V1

Content player v1 has the capability to play/render a variety of content in both mobile and web form factors.

This is the classic version of the player. The following formats are supported by this player:

* [ECML](/learn/product-and-developer-guide/player/v1/players/ecml-player-v1)
* [PDF](/learn/product-and-developer-guide/player/v1/players/pdf-player-v1)
* [EPUB](/learn/product-and-developer-guide/player/v1/players/epub-player-v1)
* [HTML and H5P](/learn/product-and-developer-guide/player/v1/players/html-h5p-player-v1)
* [Video (MP4, WebM)](/learn/product-and-developer-guide/player/v1/players/video-player-v1)
* [Youtube](/learn/product-and-developer-guide/player/v1/players/video-player-v1#youtube)

![](/files/6qVrNQtRLhyk5KVbehfj)


# Features

### **Overlay**

Overlay is used to show some extra information on top of the content. This is a configurable properties

* **User switcher** *(enableUserSwitcher)***:** Content player v1 has the capability to enable multi-user with this feature. The *enableUserSwitcher* is a overlay property and it is used to switch between users while playing content.

![](/files/9td3ZOS5a0rzqJlIdf3A)

* **Show user \_** (showUser)\_**:** Player provide the capability to hide and show the users while rendering the content. The show/hide user-switcher functionality. default is true to show user information
* **Show Overlay** *(showOverlayshowOverlay)***:** This property enhance the content player capability to show extra information about contents. Default is true.
* **Show next** *(showNext)***:** This is a navigation property of next button for content. You can hide and show the next navigation button. Default is true.
* **Show previous** *(showPrevious)***:** This is a navigation property of previous button for content. You can hide and show the previous navigation button. Default is true.
* **Show Submit** *(showSubmit):* This is used to show a submit button after attending the assessment. Default is true.
* **Show reload** *(showReload)***:** Show reload button is used to reload or re-render the stage. This is a configurable property to show/hide this reply button. Default is true.

#### Sample overlay config

```
"overlay": {
    "enableUserSwitcher": true, // enable/disable user-switcher, default is true for mobile & preview
    "showUser": true, // show/hide user-switcher functionality. default is true to show user information
    "showOverlay": true, // show/hide complete overlay including next/previous buttons. default value true
    "showNext": true, // show/hide next navigation button on content. default is true
    "showPrevious": true, // show/hide previous navigation button on content. default is true
    "showSubmit": false, // show/hide submit button for assessmetns in the content. default is false
    "showReload": true, // show/hide stage reload button to reset/re-render the stage. default is true
    "menu": {
        "showTeachersInstruction": true // show/hide teacher instructions in the menu
    }
}
```

### **Splash screen**

User can customise the loading screen of the content player using below configuration

```
"splash": {
   "text": "Powered by Sunbird", // Text to be shown on splash screen while loading content. 
   "icon": "assets/icons/icn_genie.png", // Icon to be show on above the text(full absolute path of the image in mobiew or http image link)
   "bgImage": "assets/icons/background_1.png", // backgroung image used for splash screen while loading content(absolute folder path of the image in mobie or http image link)
   "webLink": "XXXX" // weblink to be opened on click of text
}
```

### **Navigate**

This navigate feature will provide the user to view previous and next page from given page [PDF player](/learn/product-and-developer-guide/player/v1/players/pdf-player-v1) only provides to jump to any specific location capability.

![](/files/gU7dAWx5C2YCWa5kNZx4)

### **Side menu**

This is one of the property of [overlay config](#overlay). This allows user to perform the following actions based input config provided.

![](/files/1g7hK594tfHQitzEhU1e)

* **Replay**: Its a default feature of the side menu. By clicking on  'replay' user can play the content again.
* **Switch user:** Side menu enables user to switch the current user by clicking on this side menu option. Refer [user switcher config](#sample-overlay-config) to configure this button.
* **Mute:** Side menu allows user to mute and unmute the sound of the content. Default is unmute.
* **Exit:** Its a default feature of the side menu options and user can exit the content bu clicking on this button
* **Read teacher instructions:** While creating the [ECML type content](/learn/product-and-developer-guide/player/v1/players/ecml-player-v1) if creator added the instruction to the stage, each stage will show that instructions. This is a configurable property of the side menu

**Sample config to show the instructions**

```
"menu": {
    "showTeachersInstruction": true // show/hide teacher instructions in the menu
}
```

### **End page**

Content player allows to show the customise page after rendering the content. ***showEndPage*** property defines to show this page as a end page. This end page will have the following buttons to interact with the contents

Sample config to show end page

```
"config" : {
    showEndPage: true
}
```

* **Previous:** In a collection play - the previous button will indicate the previous content in the collection.

![](/files/vVpoZgfY9O66PUz5OoFs)

* **Score:** This will indicate the user's score on the end page
* **Time:** This will indicate - how much time user has spent on the content.
* **Name :** It shows the Name of the content. This will show as per the name property of the content metadata.
* **Creator:** It shows the Name of the content creator. This will show as per the creator property of the content metadata.
* **Replay:** By clicking on the replay button user can reload the content. Its a default property of the end page.
* **Username:** Initial letter of the user will show on the end page. By clicking on this button user switcher popup will show - witch allows you to select and switch the user.
* **Exit:** By clicking on the Exit button user can exit the content and application.

### Next and previous

Next and previous buttons are used see the next and previous slide of the content. On end page, the next and previous button can be configured.

To show these buttons on the end page, you have to expose the service methods. Please refer to [these services](https://github.com/project-sunbird/sunbird-content-player/tree/9fc06f842ff2bc0bd1b1143d288caed1075ada83/player/public/services) for more information.

Sample API response to show the next and previous button

```
{
  "next": {
    "content": {
      "contentData": {
      }
    }
  },
  "prev": {
    "content": {
      "contentData": {
      }
    }
  }
}
```


# Architecture

![Content player v1 architecture](/files/YYGUdeHWsNS4ToueO5Iv)

Content player v1 can be integrate in Desktop app, Mobile app by using the npm package. This  provide the capability to render ECML, epub, pdf, mp4, youtube, mp3 and html type contents. V1 player has dependency on sunbird telemetry sdk and content plugins.

### Content Launchers

Content player v1 is able to play the different format of content using the configuration. You just need to provide the mimeType and plugin launchers in config. Its capable to load the content launchers according to the mimeType

#### Base launcher

Base launcher is responsible to launch following launchers based on the mime types of the assets

* ECML : ECML launcher derived from the base launcher and also is responsible to launch the ecml type assets
* Epub : Epub type assets can be render by using this launcher
* PDF : If the mime type is application/pdf, base launcher will launches the pdf launcher
* Video : This launcher is responsible to to launch the mp4, mp3, webm and youtube type assets
* HTML : This launcher also derived from the base launcher and this launcher is responsible to launch the Html files.

#### Sample config to launch the ECML assets

```
"contentLaunchers": [ // content laucher plugins for specific content mimetypes
    { // Plugin used for ECML content to launch, It is default plugin
        "mimeType": 'application/vnd.ekstep.ecml-archive',
        "id": 'org.ekstep.ecmlrenderer',
        "ver": 1.0,
        "type": 'plugin'
    }
]
```

### White List Urls

Content player v1 will allows to play the external streaming url by adding the domain into the whiteListUrl config

**Sample config to add white listed urls**

```
whiteListUrl: [ 
    'self', 'https://.blob.core.windows.net/**',
    'https://ekstep-public-.s3-ap-south-1.amazonaws.com/**' 
]
```

Please refer to the [config section of README.md ](https://github.com/project-sunbird/sunbird-content-player#how-to-render-the-contents)file of the below [git repository](https://github.com/project-sunbird/sunbird-content-player)


# Players

{% content-ref url="/pages/OTCAu1m3IYardR8RrR9z" %}
[ECML Player - v1](/learn/product-and-developer-guide/player/v1/players/ecml-player-v1)
{% endcontent-ref %}

{% content-ref url="/pages/BUq16zWa9350lBgzUHWA" %}
[Video Player v1](/learn/product-and-developer-guide/player/v1/players/video-player-v1)
{% endcontent-ref %}

{% content-ref url="/pages/BvAqlEfBi0IlTd0QJBB5" %}
[HTML-h5p Player - v1](/learn/product-and-developer-guide/player/v1/players/html-h5p-player-v1)
{% endcontent-ref %}

{% content-ref url="/pages/NcEw3t0R36JES94LltAc" %}
[Epub Player - v1](/learn/product-and-developer-guide/player/v1/players/epub-player-v1)
{% endcontent-ref %}

{% content-ref url="/pages/reeZ1fSGEUOVy86qnlVY" %}
[PDF Player - v1](/learn/product-and-developer-guide/player/v1/players/pdf-player-v1)
{% endcontent-ref %}


# ECML Player - v1

ECML Player is used to play the interactive assets

## Overview

The content player v1 is capable to play the ECML format assets. ECML is a short form of Ekstep content markup language.&#x20;

#### MIME Type

```
"mimeType": "application/vnd.ekstep.ecml-archive"
```

## **Configuration**

Based on the configuration ECML content can be rendered.

```
{
    "context": {},
    "config": {},
    "metadata": {
        "mimeType": "application/vnd.ekstep.ecml-archive",
        "body": "{\"theme\":{\"manifest\":{\"media\":[{\"id\":\"domain_4088\",\"type\":\"image\",\"src\":\"https://community.ekstep.in/assets/public/content/Story5_1463740982012.png\",\"assetId\":\"domain_4088\"},{\"id\":\"mic\",\"type\":\"image\",\"src\":\"https://community.ekstep.in/assets/public/content/1463730546614mic.png\",\"assetId\":\"mic\"},{\"id\":\"blacktint\",\"type\":\"image\",\"src\":\"https://community.ekstep.in/assets/public/content/14659048074781463388910130blacktint.png\"},{\"id\":\"record\",\"type\":\"image\",\"src\":\"https://community.ekstep.in/assets/public/content/14659048081011463388910720record.png\"},{\"id\":\"stop_record\",\"type\":\"image\",\"src\":\"https://community.ekstep.in/assets/public/content/14659048079251463388910583stop.png\"},{\"id\":\"icon_sound\",\"type\":\"image\",\"src\":\"https://community.ekstep.in/assets/public/content/14659048086161463388911157icon_sound.png\"},{\"id\":\"domain_4111\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p1_1463741645976.mp3\",\"assetId\":\"domain_4111\"},{\"id\":\"domain_7490\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/title1_1465575036765.mp3\",\"assetId\":\"domain_7490\"},{\"id\":\"domain_7491\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p1ko2_1465575092986.mp3\",\"assetId\":\"domain_7491\"},{\"id\":\"domain_7492\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p1ake3_1465575140132.mp3\",\"assetId\":\"domain_7492\"},{\"id\":\"domain_7493\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/title3_1465575373768.mp3\",\"assetId\":\"domain_7493\"},{\"id\":\"domain_7494\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p1mile4_1465575427954.mp3\",\"assetId\":\"domain_7494\"},{\"id\":\"domain_7495\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/title3_1465575468608.mp3\",\"assetId\":\"domain_7495\"},{\"id\":\"domain_7496\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p1lakhar5_1465575524236.mp3\",\"assetId\":\"domain_7496\"},{\"id\":\"domain_7497\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p1vah6_1465575568067.mp3\",\"assetId\":\"domain_7497\"},{\"id\":\"domain_7498\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p1thalab7_1465575614677.mp3\",\"assetId\":\"domain_7498\"},{\"id\":\"domain_7499\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p1kay8_1465575662244.mp3\",\"assetId\":\"domain_7499\"},{\"id\":\"domain_7500\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p1kinaraye9_1465575703172.mp3\",\"assetId\":\"domain_7500\"},{\"id\":\"domain_7501\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p1ghaya10_1465575753467.mp3\",\"assetId\":\"domain_7501\"},{\"id\":\"domain_4109\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p2_1463741595201.mp3\",\"assetId\":\"domain_4109\"},{\"id\":\"domain_7502\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p2pani1_1465575829877.mp3\",\"assetId\":\"domain_7502\"},{\"id\":\"domain_7503\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p2may2_1465575850900.mp3\",\"assetId\":\"domain_7503\"},{\"id\":\"domain_7504\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p2yousay3_1465575900251.mp3\",\"assetId\":\"domain_7504\"},{\"id\":\"domain_7505\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p2apane4_1465575957086.mp3\",\"assetId\":\"domain_7505\"},{\"id\":\"domain_7506\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p2parchaye_1465576381958.mp3\",\"assetId\":\"domain_7506\"},{\"id\":\"domain_7507\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p2dheke6_1465576441822.mp3\",\"assetId\":\"domain_7507\"},{\"id\":\"domain_7508\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p2yousaye7_1465576488471.mp3\",\"assetId\":\"domain_7508\"},{\"id\":\"domain_7509\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p2lagha8_1465576531305.mp3\",\"assetId\":\"domain_7509\"},{\"id\":\"domain_7510\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p2dusaraye9_1465576658703.mp3\",\"assetId\":\"domain_7510\"},{\"id\":\"domain_7511\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/title1_1465576758380.mp3\",\"assetId\":\"domain_7511\"},{\"id\":\"domain_7512\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p2kaye11_1465576825294.mp3\",\"assetId\":\"domain_7512\"},{\"id\":\"domain_7513\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p2pass12_1465576869340.mp3\",\"assetId\":\"domain_7513\"},{\"id\":\"domain_7514\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p2bhee14_1465576915923.mp3\",\"assetId\":\"domain_7514\"},{\"id\":\"domain_7515\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p1ake3_1465576980799.mp3\",\"assetId\":\"domain_7515\"},{\"id\":\"domain_7516\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/title3_1465577025982.mp3\",\"assetId\":\"domain_7516\"},{\"id\":\"domain_10530\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/hai_1465966841071.mp3\",\"assetId\":\"domain_10530\"},{\"id\":\"domain_4107\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p3_1463741570367.mp3\",\"assetId\":\"domain_4107\"},{\"id\":\"domain_7517\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p3vah1_1465577189021.mp3\",\"assetId\":\"domain_7517\"},{\"id\":\"domain_7518\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/title3_1465577242487.mp3\",\"assetId\":\"domain_7518\"},{\"id\":\"domain_7519\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p3chenaye2_1465577289951.mp3\",\"assetId\":\"domain_7519\"},{\"id\":\"domain_7520\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p3kha3_1465577335385.mp3\",\"assetId\":\"domain_7520\"},{\"id\":\"domain_7521\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p3tharika4_1465577389028.mp3\",\"assetId\":\"domain_7521\"},{\"id\":\"domain_7522\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p3souchnaye5_1465577430394.mp3\",\"assetId\":\"domain_7522\"},{\"id\":\"domain_7523\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p3lllagha6_1465577520945.mp3\",\"assetId\":\"domain_7523\"},{\"id\":\"domain_7526\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p3yousnaye7_1465577612814.mp3\",\"assetId\":\"domain_7526\"},{\"id\":\"domain_7530\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p3bounkaney8_1465578304919.mp3\",\"assetId\":\"domain_7530\"},{\"id\":\"domain_7531\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p3kaye9_1465578365051.mp3\",\"assetId\":\"domain_7531\"},{\"id\":\"domain_7533\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p3leaye10_1465578414344.mp3\",\"assetId\":\"domain_7533\"},{\"id\":\"domain_7537\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p3mohe11_1465578496083.mp3\",\"assetId\":\"domain_7537\"},{\"id\":\"domain_7545\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p3khola12_1465578554059.mp3\",\"assetId\":\"domain_7545\"},{\"id\":\"domain_4106\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p4_1463741533473.mp3\",\"assetId\":\"domain_4106\"},{\"id\":\"domain_7546\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p4mohe1_1465578622615.mp3\",\"assetId\":\"domain_7546\"},{\"id\":\"domain_7547\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p4kolthaye2_1465578663655.mp3\",\"assetId\":\"domain_7547\"},{\"id\":\"domain_7548\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p4he3_1465578708541.mp3\",\"assetId\":\"domain_7548\"},{\"id\":\"domain_7549\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/title3_1465578821120.mp3\",\"assetId\":\"domain_7549\"},{\"id\":\"domain_7556\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p4thalab4_1465578875145.mp3\",\"assetId\":\"domain_7556\"},{\"id\":\"domain_7557\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p4maye5_1465578970734.mp3\",\"assetId\":\"domain_7557\"},{\"id\":\"domain_7558\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p4ghir6_1465579018390.mp3\",\"assetId\":\"domain_7558\"},{\"id\":\"domain_7559\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p4gheye7_1465579070012.mp3\",\"assetId\":\"domain_7559\"},{\"id\":\"domain_10639\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/kathin_shabd_1465972359762.mp3\",\"assetId\":\"domain_10639\"},{\"id\":\"domain_10642\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/kutte_1465972508666.mp3\",\"assetId\":\"domain_10642\"},{\"id\":\"domain_10644\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/bhonkne_1465972575039.mp3\",\"assetId\":\"domain_10644\"},{\"id\":\"domain_10650\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/chhennne_1465972662659.mp3\",\"assetId\":\"domain_10650\"},{\"id\":\"domain_10651\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/in_shabdon_ko_chunein_1465972708813.mp3\",\"assetId\":\"domain_10651\"},{\"id\":\"do_30032054\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/aaadegaa34a_1467606593965.mp3\",\"assetId\":\"do_30032054\"},{\"id\":\"do_30032055\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/aadegayaa34_1467606616562.mp3\",\"assetId\":\"do_30032055\"},{\"id\":\"domain_4228\",\"type\":\"image\",\"src\":\"https://community.ekstep.in/assets/public/content/question_1463829748432.jpg\",\"assetId\":\"domain_4228\"},{\"id\":\"do_30082853\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/questionone_347_1472721794_1472721802085.mp3\",\"assetId\":\"do_30082853\"},{\"id\":\"do_30082859\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/questiontwo_347_1472721894_1472721902487.mp3\",\"assetId\":\"do_30082859\"},{\"id\":\"do_30082862\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/questionthree_347_1472721982_1472721990066.mp3\",\"assetId\":\"do_30082862\"},{\"id\":\"do_30082865\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/questionfour_347_1472722064_1472722071966.mp3\",\"assetId\":\"do_30082865\"},{\"id\":\"do_30082871\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/questionfive_347_1472722180_1472722187784.mp3\",\"assetId\":\"do_30082871\"},{\"id\":\"do_30082873\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/questionsixoption_347_1472722277_1472722285501.mp3\",\"assetId\":\"do_30082873\"},{\"id\":\"validate\",\"src\":\"https://community.ekstep.in/assets/public/content/btn_ok_highlights_1460705843676.png\",\"type\":\"image\",\"assetId\":\"domain_38852\"},{\"id\":\"domain_10514\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/chitra_ko_pehchaano_1465965529177.mp3\",\"assetId\":\"domain_10514\"},{\"id\":\"domain_8204\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/question_323_1465817761_1465817761070.mp3\",\"assetId\":\"domain_8204\"},{\"id\":\"domain_8210\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/question_323_1465817873_1465817873949.mp3\",\"assetId\":\"domain_8210\"},{\"id\":\"do_30019709\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/question3_141_1466944214_1466944214080.mp3\",\"assetId\":\"do_30019709\"},{\"id\":\"endScreen\",\"type\":\"image\",\"src\":\"https://community.ekstep.in/assets/public/content/1463730546861endScreen.png\",\"assetId\":\"endScreen\"},{\"id\":\"previous\",\"src\":\"https://community.ekstep.in/assets/public/content/btn_back_1461401700215.png\",\"type\":\"image\",\"assetId\":\"domain_40359\"},{\"id\":\"next\",\"src\":\"https://community.ekstep.in/assets/public/content/btn_next_1461401649059.png\",\"type\":\"image\",\"assetId\":\"domain_40358\"},{\"id\":\"domain_8205\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/a1_323_1465817797_1465817797448.mp3\",\"assetId\":\"domain_8205\"},{\"id\":\"domain_8206\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/a2_323_1465817810_1465817810836.mp3\",\"assetId\":\"domain_8206\"},{\"id\":\"domain_8207\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/a3_323_1465817824_1465817824542.mp3\",\"assetId\":\"domain_8207\"},{\"id\":\"domain_8208\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/a4_323_1465817835_1465817835892.mp3\",\"assetId\":\"domain_8208\"},{\"id\":\"domain_10624\",\"type\":\"image\",\"src\":\"https://community.ekstep.in/assets/public/content/roti_323_1465971255_1465971255545.jpg\",\"assetId\":\"domain_10624\"},{\"id\":\"domain_10561\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/story11q4a1_141_1465970351_1465970351272.mp3\",\"assetId\":\"domain_10561\"},{\"id\":\"domain_4543\",\"type\":\"image\",\"src\":\"https://community.ekstep.in/assets/public/content/photo5.2_323_1463999052_1463999053239.jpg\",\"assetId\":\"domain_4543\"},{\"id\":\"domain_8203\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/a1_323_1465817608_1465817608222.mp3\",\"assetId\":\"domain_8203\"},{\"id\":\"do_30019710\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/option1_141_1466944270_1466944270836.mp3\",\"assetId\":\"do_30019710\"},{\"id\":\"do_30019711\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/option2_141_1466944303_1466944303999.mp3\",\"assetId\":\"do_30019711\"},{\"id\":\"do_30019712\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/option3_141_1466944325_1466944325637.mp3\",\"assetId\":\"do_30019712\"},{\"id\":\"do_30019713\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/option4_141_1466944348_1466944348151.mp3\",\"assetId\":\"do_30019713\"},{\"id\":\"domain_8211\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/a1_323_1465817904_1465817904087.mp3\",\"assetId\":\"domain_8211\"},{\"id\":\"domain_8212\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/a2_323_1465817917_1465817917890.mp3\",\"assetId\":\"domain_8212\"},{\"id\":\"domain_8213\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/a3_323_1465817932_1465817932973.mp3\",\"assetId\":\"domain_8213\"},{\"id\":\"domain_8214\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/a4_323_1465817942_1465817942044.mp3\",\"assetId\":\"domain_8214\"},{\"id\":\"popupTint\",\"src\":\"https://community.ekstep.in/assets/public/content/PopupTint_1460636175572.png\",\"type\":\"image\",\"assetId\":\"domain_38606\"},{\"id\":\"retryBg\",\"src\":\"https://community.ekstep.in/assets/public/content/retryBg_1460727370746.png\",\"type\":\"image\",\"assetId\":\"domain_38938\"},{\"id\":\"goodjobBg\",\"src\":\"https://community.ekstep.in/assets/public/content/goodjobBg_1460727428389.png\",\"type\":\"image\",\"assetId\":\"domain_38939\"},{\"assetId\":\"do_30013065_keyboard_v2\",\"id\":\"keyboard_v2\",\"src\":\"https://community.ekstep.in/assets/public/content/1466499473814customkeyboard.js\",\"type\":\"plugin\"},{\"assetId\":\"domain_4171_keyboard_css\",\"id\":\"keyboard_css\",\"src\":\"https://community.ekstep.in/assets/public/content/1463746543887keyboard.css\",\"type\":\"css\"},{\"assetId\":\"do_30013065_keyboard_css_v2\",\"id\":\"keyboard_css_v2\",\"src\":\"https://community.ekstep.in/assets/public/content/1466499473632keyboard.css\",\"type\":\"css\"}]},\"id\":\"theme\",\"startStage\":\"recordAudio6\",\"ver\":0.2,\"controller\":[{\"name\":\"assessment_d62be57e-5339-485d-85a5-ed06367575fc\",\"type\":\"items\",\"id\":\"assessment_d62be57e-5339-485d-85a5-ed06367575fc\",\"__cdata\":{\"total_items\":1,\"subject\":\"domain\",\"code\":\"ItemSet_37288626-f4dc-424f-87dc-f1896910a30b\",\"type\":\"materialised\",\"lastUpdatedOn\":\"2016-06-13T11:41:51.061+0000\",\"showImmediateFeedback\":true,\"SET_TYPE\":\"MATERIALISED_SET\",\"createdOn\":\"2016-06-13T11:41:51.054+0000\",\"title\":\"Assessment Title\",\"items\":{\"domain_8220\":[{\"template\":\"org.ekstep.mcq.ta\",\"question_audio\":\"domain_8204\",\"subject\":\"domain\",\"template_id\":\"domain_3491\",\"code\":\"org.ekstep.assessmentitem.domain_4562\",\"lastUpdatedOn\":\"2016-06-13T11:37:20.763+0000\",\"type\":\"mcq\",\"concepts\":[{\"identifier\":\"LO10\",\"name\":\"Comprehension of brief passage 2\",\"objectType\":\"Concept\",\"relation\":\"associatedTo\",\"description\":null,\"index\":null}],\"createdOn\":\"2016-05-23T10:36:47.585+0000\",\"feedback\":\"\",\"qlevel\":\"EASY\",\"title\":\"Story5Q3\",\"name\":\"Story5Q3\",\"lastUpdatedBy\":\"323\",\"owner\":\"323\",\"used_for\":\"worksheet\",\"domain\":\"literacy\",\"max_score\":1,\"gradeLevel\":[\"Other\"],\"question\":\"कुत्ता रोटी लेकर कहाँ गया?\",\"language\":[\"Hindi\"],\"identifier\":\"domain_4562\",\"media\":[{\"id\":\"blacktint\",\"type\":\"image\",\"src\":\"https://community.ekstep.in/assets/public/content/14659048074781463388910130blacktint.png\",\"preload\":true},{\"id\":\"record\",\"type\":\"image\",\"src\":\"https://community.ekstep.in/assets/public/content/14659048081011463388910720record.png\",\"preload\":true},{\"id\":\"stop_record\",\"type\":\"image\",\"src\":\"https://community.ekstep.in/assets/public/content/14659048079251463388910583stop.png\",\"preload\":true},{\"id\":\"icon_sound\",\"type\":\"image\",\"src\":\"https://community.ekstep.in/assets/public/content/14659048086161463388911157icon_sound.png\",\"preload\":true},{\"id\":\"domain_8204\",\"type\":\"audio\",\"src\":\"https://ekstep-public-prod.s3-ap-south-1.amazonaws.com/content/question_323_1465817761_1465817761070.mp3\",\"asset_id\":\"domain_8204\",\"preload\":true},{\"id\":\"domain_8205\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/a1_323_1465817797_1465817797448.mp3\",\"assetId\":\"domain_8205\"},{\"id\":\"domain_8206\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/a2_323_1465817810_1465817810836.mp3\",\"assetId\":\"domain_8206\"},{\"id\":\"domain_8207\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/a3_323_1465817824_1465817824542.mp3\",\"assetId\":\"domain_8207\"},{\"id\":\"domain_8208\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/a4_323_1465817835_1465817835892.mp3\",\"assetId\":\"domain_8208\"}],\"options\":[{\"marks\":\"0\",\"value\":{\"type\":\"mixed\",\"text\":\"घर\",\"count\":\"\",\"image\":null,\"audio\":\"domain_8205\",\"fontsize\":150}},{\"marks\":\"1\",\"value\":{\"type\":\"mixed\",\"text\":\"तालाब के किनारे\",\"count\":\"\",\"image\":null,\"audio\":\"domain_8206\",\"fontsize\":150},\"score\":1,\"answer\":true},{\"marks\":\"0\",\"value\":{\"type\":\"mixed\",\"text\":\"जंगल\",\"count\":\"\",\"image\":null,\"audio\":\"domain_8207\",\"fontsize\":150}},{\"marks\":\"0\",\"value\":{\"type\":\"mixed\",\"text\":\"शहर\",\"count\":\"\",\"image\":null,\"audio\":\"domain_8208\",\"fontsize\":150}}]}]},\"SET_OBJECT_TYPE_KEY\":\"AssessmentItem\",\"shuffle\":false,\"lastUpdatedBy\":\"323\",\"owner\":\"Ilimi\",\"used_for\":\"assessment\",\"max_score\":1,\"gradeLevel\":[\"Grade 1\"],\"item_sets\":[{\"id\":\"domain_8220\",\"count\":1}],\"language\":[\"English\"],\"identifier\":\"domain_8220\"}},{\"name\":\"assessment_7874c633-fcfb-495e-b013-be382cfa7db3\",\"type\":\"items\",\"id\":\"assessment_7874c633-fcfb-495e-b013-be382cfa7db3\",\"__cdata\":{\"total_items\":1,\"subject\":\"domain\",\"code\":\"ItemSet_b2d7396c-8ec2-4527-9cdb-71d01227602d\",\"type\":\"materialised\",\"lastUpdatedOn\":\"2016-06-23T07:03:04.217+0000\",\"showImmediateFeedback\":true,\"SET_TYPE\":\"MATERIALISED_SET\",\"createdOn\":\"2016-06-23T07:03:04.207+0000\",\"title\":\"Assessment Title\",\"items\":{\"do_30016593\":[{\"model\":{\"keys\":\"र,रा,रि,री,रु,रू,रे,रै,रो,रौ,रं,रः,ट,टा,टि,टी,टु,टू,टे,टै,टो,टौ,टं,टः\"},\"question_audio\":\"domain_10561\",\"subject\":\"domain\",\"template_id\":\"do_30013065\",\"type\":\"ftb\",\"feedback\":\"\",\"qlevel\":\"EASY\",\"title\":\"Story5Q1\",\"question_image\":\"domain_10624\",\"name\":\"Story5Q1\",\"domain\":\"literacy\",\"max_score\":1,\"question\":\"\",\"template\":\"org.ekstep.ftb.barakhadinew\",\"answer\":{\"ans1\":{\"value\":\"रोटी\",\"score\":1}},\"code\":\"org.ekstep.assessmentitem.domain_4533\",\"lastUpdatedOn\":\"2016-06-23T07:01:34.947+0000\",\"concepts\":[{\"identifier\":\"LO1\",\"name\":\"Word Meaning\",\"objectType\":\"Concept\",\"relation\":\"associatedTo\",\"description\":null,\"index\":null}],\"createdOn\":\"2016-05-23T10:09:03.976+0000\",\"lastUpdatedBy\":\"323\",\"used_for\":\"worksheet\",\"owner\":\"323\",\"gradeLevel\":[\"Other\"],\"language\":[\"Hindi\"],\"identifier\":\"domain_4533\",\"media\":[{\"id\":\"blacktint\",\"type\":\"image\",\"src\":\"https://community.ekstep.in/assets/public/content/14659048074781463388910130blacktint.png\",\"preload\":true},{\"id\":\"record\",\"type\":\"image\",\"src\":\"https://community.ekstep.in/assets/public/content/14659048081011463388910720record.png\",\"preload\":true},{\"id\":\"stop_record\",\"type\":\"image\",\"src\":\"https://community.ekstep.in/assets/public/content/14659048079251463388910583stop.png\",\"preload\":true},{\"id\":\"icon_sound\",\"type\":\"image\",\"src\":\"https://community.ekstep.in/assets/public/content/14659048086161463388911157icon_sound.png\",\"preload\":true},{\"id\":\"domain_10624\",\"type\":\"image\",\"src\":\"https://community.ekstep.in/assets/public/content/roti_323_1465971255_1465971255545.jpg\",\"assetId\":\"domain_10624\"},{\"id\":\"domain_10561\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/story11q4a1_141_1465970351_1465970351272.mp3\",\"assetId\":\"domain_10561\"}]}]},\"SET_OBJECT_TYPE_KEY\":\"AssessmentItem\",\"shuffle\":false,\"lastUpdatedBy\":\"141\",\"owner\":\"Ilimi\",\"used_for\":\"assessment\",\"max_score\":1,\"gradeLevel\":[\"Grade 1\"],\"item_sets\":[{\"id\":\"do_30016593\",\"count\":1}],\"language\":[\"English\"],\"identifier\":\"do_30016593\"}},{\"name\":\"assessment_e9ba0aea-5717-4e5a-82bd-331ce4e6e4bc\",\"type\":\"items\",\"id\":\"assessment_e9ba0aea-5717-4e5a-82bd-331ce4e6e4bc\",\"__cdata\":{\"total_items\":1,\"subject\":\"domain\",\"code\":\"ItemSet_3c22a625-1853-45d6-88a1-fb7e9da22e81\",\"type\":\"materialised\",\"lastUpdatedOn\":\"2016-06-23T07:03:19.033+0000\",\"showImmediateFeedback\":true,\"SET_TYPE\":\"MATERIALISED_SET\",\"createdOn\":\"2016-06-23T07:03:19.023+0000\",\"title\":\"Assessment Title\",\"items\":{\"do_30016595\":[{\"model\":{\"keys\":\"त,ता,ति,ती,तु,तू,ते,तै,तो,तौ,तं,तः,ल,ला,लि,ली,लु,लू,ब,बा,बि,बी,बु,बू\"},\"question_audio\":\"domain_8203\",\"subject\":\"domain\",\"template_id\":\"do_30013065\",\"type\":\"ftb\",\"feedback\":\"\",\"qlevel\":\"EASY\",\"title\":\"Story5Q2\",\"question_image\":\"domain_4543\",\"name\":\"Story5Q2\",\"domain\":\"literacy\",\"max_score\":1,\"question\":\"\",\"template\":\"org.ekstep.ftb.barakhadinew\",\"answer\":{\"ans1\":{\"value\":\"तालाब\",\"score\":1}},\"code\":\"org.ekstep.assessmentitem.domain_4544\",\"lastUpdatedOn\":\"2016-06-23T07:02:23.048+0000\",\"concepts\":[{\"identifier\":\"LO1\",\"name\":\"Word Meaning\",\"objectType\":\"Concept\",\"relation\":\"associatedTo\",\"description\":null,\"index\":null}],\"createdOn\":\"2016-05-23T10:24:13.473+0000\",\"lastUpdatedBy\":\"323\",\"used_for\":\"worksheet\",\"owner\":\"323\",\"gradeLevel\":[\"Other\"],\"language\":[\"Hindi\"],\"identifier\":\"domain_4544\",\"media\":[{\"id\":\"blacktint\",\"type\":\"image\",\"src\":\"https://community.ekstep.in/assets/public/content/14659048074781463388910130blacktint.png\",\"preload\":true},{\"id\":\"record\",\"type\":\"image\",\"src\":\"https://community.ekstep.in/assets/public/content/14659048081011463388910720record.png\",\"preload\":true},{\"id\":\"stop_record\",\"type\":\"image\",\"src\":\"https://community.ekstep.in/assets/public/content/14659048079251463388910583stop.png\",\"preload\":true},{\"id\":\"icon_sound\",\"type\":\"image\",\"src\":\"https://community.ekstep.in/assets/public/content/14659048086161463388911157icon_sound.png\",\"preload\":true},{\"id\":\"domain_4543\",\"type\":\"image\",\"src\":\"https://community.ekstep.in/assets/public/content/photo5.2_323_1463999052_1463999053239.jpg\",\"assetId\":\"domain_4543\"},{\"id\":\"domain_8203\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/a1_323_1465817608_1465817608222.mp3\",\"assetId\":\"domain_8203\"}]}]},\"SET_OBJECT_TYPE_KEY\":\"AssessmentItem\",\"shuffle\":false,\"lastUpdatedBy\":\"141\",\"owner\":\"Ilimi\",\"used_for\":\"assessment\",\"max_score\":1,\"gradeLevel\":[\"Grade 1\"],\"item_sets\":[{\"id\":\"do_30016595\",\"count\":1}],\"language\":[\"English\"],\"identifier\":\"do_30016595\"}},{\"name\":\"assessment_4fc1b50e-2577-49dc-bba0-aef91a16c6a9\",\"type\":\"items\",\"id\":\"assessment_4fc1b50e-2577-49dc-bba0-aef91a16c6a9\",\"__cdata\":{\"total_items\":1,\"subject\":\"domain\",\"code\":\"ItemSet_e0e066b7-ae4f-4ad2-a339-971d3f32146f\",\"type\":\"materialised\",\"lastUpdatedOn\":\"2016-06-28T05:31:21.508+0000\",\"showImmediateFeedback\":false,\"SET_TYPE\":\"MATERIALISED_SET\",\"createdOn\":\"2016-06-28T05:31:21.500+0000\",\"title\":\"Assessment Title\",\"items\":{\"do_30020382\":[{\"template\":\"org.ekstep.mcq.ta_v1\",\"question_audio\":\"do_30019709\",\"subject\":\"domain\",\"template_id\":\"do_30017209\",\"code\":\"org.ekstep.assessmentitem.literacy_57720b9be5a64\",\"lastUpdatedOn\":\"2016-06-28T05:31:08.091+0000\",\"type\":\"mcq\",\"concepts\":[{\"identifier\":\"literacy_v2_74\",\"name\":\"Comprehension of stories 2\",\"objectType\":\"Concept\",\"relation\":\"associatedTo\",\"description\":null,\"index\":null}],\"createdOn\":\"2016-06-28T05:31:08.091+0000\",\"feedback\":\"\",\"qlevel\":\"EASY\",\"title\":\"Story5Q7\",\"name\":\"Story5Q7\",\"lastUpdatedBy\":\"141\",\"owner\":\"141\",\"used_for\":\"worksheet\",\"domain\":\"literacy\",\"max_score\":4,\"gradeLevel\":[\"Grade 3\"],\"question\":\"तुम कुत्ते की जगह होते तो दूसरी रोटी कैसे लेते ?\\r\\n\",\"language\":[\"Hindi\"],\"identifier\":\"do_30020381\",\"media\":[{\"id\":\"blacktint\",\"type\":\"image\",\"src\":\"https://community.ekstep.in/assets/public/content/14659048074781463388910130blacktint.png\",\"preload\":true},{\"id\":\"record\",\"type\":\"image\",\"src\":\"https://community.ekstep.in/assets/public/content/14659048081011463388910720record.png\",\"preload\":true},{\"id\":\"stop_record\",\"type\":\"image\",\"src\":\"https://community.ekstep.in/assets/public/content/14659048079251463388910583stop.png\",\"preload\":true},{\"id\":\"icon_sound\",\"type\":\"image\",\"src\":\"https://community.ekstep.in/assets/public/content/14659048086161463388911157icon_sound.png\",\"preload\":true},{\"id\":\"do_30019709\",\"type\":\"audio\",\"src\":\"https://ekstep-public-prod.s3-ap-south-1.amazonaws.com/content/question3_141_1466944214_1466944214080.mp3\",\"asset_id\":\"do_30019709\",\"preload\":true},{\"id\":\"do_30019710\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/option1_141_1466944270_1466944270836.mp3\",\"assetId\":\"do_30019710\"},{\"id\":\"do_30019711\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/option2_141_1466944303_1466944303999.mp3\",\"assetId\":\"do_30019711\"},{\"id\":\"do_30019712\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/option3_141_1466944325_1466944325637.mp3\",\"assetId\":\"do_30019712\"},{\"id\":\"do_30019713\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/option4_141_1466944348_1466944348151.mp3\",\"assetId\":\"do_30019713\"}],\"options\":[{\"marks\":\"1\",\"value\":{\"type\":\"mixed\",\"text\":\"अपनी रोटी नीचे रखता\",\"count\":\"\",\"image\":null,\"audio\":\"do_30019710\",\"fontsize\":150},\"score\":1,\"answer\":true},{\"marks\":\"1\",\"value\":{\"type\":\"mixed\",\"text\":\"बिना भौकें पानी में छलांग लगाता\",\"count\":\"\",\"image\":null,\"audio\":\"do_30019711\",\"fontsize\":150},\"score\":1,\"answer\":true},{\"marks\":\"1\",\"value\":{\"type\":\"mixed\",\"text\":\"परछाईं में तो मैं ही था \",\"count\":\"\",\"image\":null,\"audio\":\"do_30019712\",\"fontsize\":150},\"score\":1,\"answer\":true},{\"marks\":\"1\",\"value\":{\"type\":\"mixed\",\"text\":\"कुछ नहीं करता \",\"count\":\"\",\"image\":null,\"audio\":\"do_30019713\",\"fontsize\":150},\"score\":1,\"answer\":true}]}]},\"SET_OBJECT_TYPE_KEY\":\"AssessmentItem\",\"shuffle\":false,\"lastUpdatedBy\":\"141\",\"owner\":\"Ilimi\",\"used_for\":\"assessment\",\"max_score\":1,\"gradeLevel\":[\"Grade 1\"],\"item_sets\":[{\"id\":\"do_30020382\",\"count\":1}],\"language\":[\"English\"],\"identifier\":\"do_30020382\"}},{\"name\":\"assessment_cf6ddd09-764f-4611-9ab5-82ae8a124ed7\",\"type\":\"items\",\"id\":\"assessment_cf6ddd09-764f-4611-9ab5-82ae8a124ed7\",\"__cdata\":{\"total_items\":1,\"subject\":\"domain\",\"code\":\"ItemSet_3d6a527a-f5d8-40c0-8898-115bdbff0dbc\",\"type\":\"materialised\",\"lastUpdatedOn\":\"2016-06-28T09:15:06.150+0000\",\"showImmediateFeedback\":true,\"SET_TYPE\":\"MATERIALISED_SET\",\"createdOn\":\"2016-06-28T09:15:06.142+0000\",\"title\":\"Assessment Title\",\"items\":{\"do_30022034\":[{\"template\":\"org.ekstep.mcq.ta\",\"question_audio\":\"domain_8210\",\"subject\":\"domain\",\"template_id\":\"domain_3491\",\"code\":\"org.ekstep.assessmentitem.domain_4564\",\"lastUpdatedOn\":\"2016-06-28T09:14:44.613+0000\",\"type\":\"mcq\",\"concepts\":[{\"identifier\":\"LO10\",\"name\":\"Passage Comprehension\",\"objectType\":\"Concept\",\"relation\":\"associatedTo\",\"description\":null,\"index\":null}],\"createdOn\":\"2016-05-23T10:39:51.018+0000\",\"feedback\":\"\",\"qlevel\":\"EASY\",\"title\":\"Story5Q4\",\"name\":\"Story5Q4\",\"lastUpdatedBy\":\"323\",\"owner\":\"323\",\"used_for\":\"worksheet\",\"domain\":\"literacy\",\"max_score\":1,\"gradeLevel\":[\"Other\"],\"question\":\"पानी में कुत्ते को क्या दिखा?\",\"language\":[\"Hindi\"],\"identifier\":\"domain_4564\",\"media\":[{\"id\":\"blacktint\",\"type\":\"image\",\"src\":\"https://community.ekstep.in/assets/public/content/14659048074781463388910130blacktint.png\",\"preload\":true},{\"id\":\"record\",\"type\":\"image\",\"src\":\"https://community.ekstep.in/assets/public/content/14659048081011463388910720record.png\",\"preload\":true},{\"id\":\"stop_record\",\"type\":\"image\",\"src\":\"https://community.ekstep.in/assets/public/content/14659048079251463388910583stop.png\",\"preload\":true},{\"id\":\"icon_sound\",\"type\":\"image\",\"src\":\"https://community.ekstep.in/assets/public/content/14659048086161463388911157icon_sound.png\",\"preload\":true},{\"id\":\"domain_8210\",\"type\":\"audio\",\"src\":\"https://ekstep-public-prod.s3-ap-south-1.amazonaws.com/content/question_323_1465817873_1465817873949.mp3\",\"asset_id\":\"domain_8210\",\"preload\":true},{\"id\":\"domain_8211\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/a1_323_1465817904_1465817904087.mp3\",\"assetId\":\"domain_8211\"},{\"id\":\"domain_8212\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/a2_323_1465817917_1465817917890.mp3\",\"assetId\":\"domain_8212\"},{\"id\":\"domain_8213\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/a3_323_1465817932_1465817932973.mp3\",\"assetId\":\"domain_8213\"},{\"id\":\"domain_8214\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/a4_323_1465817942_1465817942044.mp3\",\"assetId\":\"domain_8214\"}],\"options\":[{\"marks\":\"1\",\"value\":{\"type\":\"mixed\",\"text\":\"अपनी परछाई\",\"count\":\"\",\"image\":null,\"audio\":\"domain_8211\",\"fontsize\":150},\"score\":1,\"answer\":true},{\"marks\":\"0\",\"value\":{\"type\":\"mixed\",\"text\":\"घास\",\"count\":\"\",\"image\":null,\"audio\":\"domain_8212\",\"fontsize\":150}},{\"marks\":\"0\",\"value\":{\"type\":\"mixed\",\"text\":\"मिठाई\",\"count\":\"\",\"image\":null,\"audio\":\"domain_8213\",\"fontsize\":150}},{\"marks\":\"0\",\"value\":{\"type\":\"mixed\",\"text\":\"मछली\",\"count\":\"\",\"image\":null,\"audio\":\"domain_8214\",\"fontsize\":150}}]}]},\"SET_OBJECT_TYPE_KEY\":\"AssessmentItem\",\"shuffle\":false,\"lastUpdatedBy\":\"141\",\"owner\":\"Ilimi\",\"used_for\":\"assessment\",\"max_score\":1,\"gradeLevel\":[\"Grade 1\"],\"item_sets\":[{\"id\":\"do_30022034\",\"count\":1}],\"language\":[\"English\"],\"identifier\":\"do_30022034\"}},{\"name\":\"dictionary\",\"type\":\"data\",\"id\":\"dictionary\",\"__cdata\":{}}],\"template\":[{\"text\":{\"event\":{\"action\":[{\"command\":\"stop\",\"sound\":true,\"type\":\"command\"},{\"asset_model\":\"item.question_audio\",\"command\":\"play\",\"type\":\"command\"}],\"type\":\"click\"},\"align\":\"center\",\"color\":\"black\",\"font\":\"Verdana\",\"fontsize\":\"2em\",\"lineHeight\":2,\"model\":\"item.question\",\"valign\":\"middle\",\"w\":100,\"x\":0,\"y\":15},\"shape\":{\"event\":{\"action\":[{\"command\":\"stop\",\"sound\":true,\"type\":\"command\"},{\"asset_model\":\"item.question_audio\",\"command\":\"play\",\"type\":\"command\"}],\"type\":\"click\"},\"h\":10,\"hitArea\":true,\"type\":\"rect\",\"w\":100,\"x\":0,\"y\":15},\"mcq\":{\"options\":{\"shape\":{\"h\":100,\"stroke\":\"black\",\"type\":\"roundrect\",\"w\":100,\"x\":0,\"y\":0},\"text\":{\"align\":\"center\",\"font\":\"Verdana\",\"fontsize\":\"1.6em\",\"h\":100,\"model\":\"option.value.text\",\"valign\":\"middle\",\"w\":100,\"x\":0,\"y\":0},\"event\":{\"action\":[{\"command\":\"stop\",\"sound\":true,\"type\":\"command\"},{\"asset_model\":\"option.value.audio\",\"command\":\"play\",\"type\":\"command\"}],\"type\":\"click\"},\"cols\":4,\"h\":30,\"highlight\":\"yellow\",\"layout\":\"table\",\"marginX\":5,\"marginY\":5,\"options\":\"options\",\"w\":97,\"x\":1.5,\"y\":50},\"model\":\"item\",\"multi_select\":false,\"shadow\":\"#56B1F7\"},\"id\":\"org.ekstep.mcq.ta\"},{\"text\":{\"align\":\"center\",\"color\":\"black\",\"font\":\"Verdana\",\"fontsize\":\"2em\",\"h\":12,\"lineHeight\":1.6,\"model\":\"item.question\",\"valign\":\"middle\",\"w\":80,\"x\":10,\"y\":2,\"z-index\":101},\"shape\":[{\"event\":{\"type\":\"click\"},\"h\":15,\"hitArea\":true,\"opacity\":1,\"w\":80,\"x\":10,\"y\":6,\"z-index\":99},{\"event\":{\"action\":{\"asset_model\":\"item.question_audio\",\"command\":\"play\",\"type\":\"command\"},\"type\":\"click\"},\"h\":40,\"hitArea\":true,\"stroke-width\":5,\"w\":20,\"x\":10,\"y\":58,\"z-index\":99}],\"keyboard_v2\":{\"id\":\"bKeyboard\",\"keys\":\"item.keys\",\"limit\":10,\"target\":\"newText\",\"type\":\"custom\"},\"g\":[{\"text\":{\"align\":\"center\",\"color\":\"black\",\"font\":\"Verdana\",\"fontsize\":\"2em\",\"h\":50,\"id\":\"newText\",\"model\":\"item.ans1\",\"valign\":\"middle\",\"w\":100,\"x\":0,\"y\":50,\"z-index\":100},\"shape\":{\"event\":{\"action\":{\"asset\":\"bKeyboard\",\"command\":\"custom\",\"id\":\"newText\",\"invoke\":\"switchTarget\",\"type\":\"command\"},\"type\":\"click\"},\"h\":50,\"hitArea\":true,\"stroke\":\"black\",\"stroke-width\":5,\"w\":100,\"x\":0,\"y\":50,\"z-index\":99},\"h\":40,\"w\":60,\"x\":40,\"y\":59},{\"image\":{\"align\":\"center\",\"h\":100,\"model\":\"item.question_image\",\"stretch\":false,\"valign\":\"top\",\"w\":100,\"x\":0,\"y\":0,\"z-index\":102},\"h\":40,\"w\":40,\"x\":0,\"y\":59}],\"id\":\"org.ekstep.ftb.barakhadinew\"},{\"text\":{\"event\":{\"action\":[{\"command\":\"stop\",\"sound\":true,\"type\":\"command\"},{\"asset_model\":\"item.question_audio\",\"command\":\"play\",\"type\":\"command\"}],\"type\":\"click\"},\"align\":\"center\",\"color\":\"black\",\"font\":\"Verdana\",\"fontsize\":\"2em\",\"h\":20,\"lineHeight\":2,\"model\":\"item.question\",\"valign\":\"top\",\"w\":100,\"x\":0,\"y\":5},\"shape\":{\"event\":{\"action\":[{\"command\":\"stop\",\"sound\":true,\"type\":\"command\"},{\"asset_model\":\"item.question_audio\",\"command\":\"play\",\"type\":\"command\"}],\"type\":\"click\"},\"h\":10,\"hitArea\":true,\"type\":\"rect\",\"w\":100,\"x\":0,\"y\":15},\"mcq\":{\"options\":{\"shape\":{\"fill\":\"#ccc\",\"h\":100,\"type\":\"roundrect\",\"w\":100,\"x\":0,\"y\":0},\"text\":{\"align\":\"center\",\"font\":\"Verdana\",\"fontsize\":\"1.6em\",\"h\":100,\"lineHeight\":2.25,\"model\":\"option.value.text\",\"valign\":\"middle\",\"w\":100,\"x\":0,\"y\":0},\"event\":{\"action\":[{\"command\":\"stop\",\"sound\":true,\"type\":\"command\"},{\"asset_model\":\"option.value.audio\",\"command\":\"play\",\"type\":\"command\"}],\"type\":\"click\"},\"cols\":4,\"h\":60,\"highlight\":\"yellow\",\"layout\":\"table\",\"marginX\":5,\"marginY\":5,\"options\":\"options\",\"w\":97,\"x\":1.5,\"y\":30},\"model\":\"item\",\"multi_select\":false,\"shadow\":\"#56B1F7\"},\"id\":\"org.ekstep.mcq.ta_v1\"},{\"image\":[{\"event\":{\"action\":{\"type\":\"command\",\"command\":\"show\",\"asset\":\"retryDialog\"},\"type\":\"click\"},\"asset\":\"popupTint\",\"x\":-100,\"y\":-150,\"w\":550,\"h\":600,\"visible\":true,\"id\":\"popup-Tint\"},{\"asset\":\"retryBg\",\"x\":0,\"y\":0,\"w\":150,\"h\":150,\"visible\":true,\"id\":\"right\"}],\"shape\":[{\"event\":{\"action\":[{\"type\":\"command\",\"command\":\"hide\",\"asset\":\"retryDialog\"},{\"type\":\"command\",\"command\":\"SHOWHTMLELEMENTS\",\"asset\":\"retry\"}],\"type\":\"click\"},\"type\":\"roundrect\",\"x\":72,\"y\":25,\"w\":50,\"h\":65,\"visible\":true,\"id\":\"retry\",\"hitArea\":true},{\"event\":{\"action\":{\"type\":\"command\",\"command\":\"transitionTo\",\"asset\":\"theme\",\"param\":\"next\",\"effect\":\"fadein\",\"direction\":\"left\",\"ease\":\"linear\",\"duration\":100},\"type\":\"click\"},\"type\":\"roundrect\",\"x\":110,\"y\":100,\"w\":25,\"h\":35,\"visible\":true,\"id\":\"continue\",\"hitArea\":true}],\"id\":\"retry\"},{\"image\":[{\"event\":{\"action\":{\"type\":\"command\",\"command\":\"show\",\"asset\":\"\"},\"type\":\"click\"},\"asset\":\"popupTint\",\"x\":-100,\"y\":-150,\"w\":550,\"h\":600,\"visible\":true,\"id\":\"popup-Tint\"},{\"event\":{\"action\":[{\"type\":\"command\",\"command\":\"transitionTo\",\"asset\":\"theme\",\"param\":\"next\",\"effect\":\"fadein\",\"direction\":\"left\",\"ease\":\"linear\",\"duration\":500}],\"type\":\"click\"},\"asset\":\"goodjobBg\",\"x\":0,\"y\":0,\"w\":150,\"h\":150,\"visible\":true,\"id\":\"continue\"}],\"id\":\"goodjob\"}],\"stage\":[{\"id\":\"baseStage1\",\"preload\":true,\"image\":[{\"asset\":\"domain_10624\"},{\"asset\":\"domain_4543\"}],\"audio\":[{\"asset\":\"domain_8205\"},{\"asset\":\"domain_8206\"},{\"asset\":\"domain_8207\"},{\"asset\":\"domain_8208\"},{\"asset\":\"domain_10561\"},{\"asset\":\"domain_8203\"},{\"asset\":\"do_30019710\"},{\"asset\":\"do_30019711\"},{\"asset\":\"do_30019712\"},{\"asset\":\"do_30019713\"},{\"asset\":\"domain_8211\"},{\"asset\":\"domain_8212\"},{\"asset\":\"domain_8213\"},{\"asset\":\"domain_8214\"}]},{\"id\":\"recordAudio6\",\"x\":0,\"y\":0,\"w\":100,\"h\":100,\"param\":[{\"name\":\"previousScreen\",\"value\":\"recordAudio5\"},{\"name\":\"nextScreen\",\"value\":\"recordAudio7\"},{\"name\":\"next\",\"value\":\"recordAudio7\"}],\"events\":{\"event\":[{\"action\":[{\"asset\":\"startrec\",\"command\":\"hide\",\"type\":\"command\"},{\"asset\":\"stoprec\",\"command\":\"show\",\"type\":\"command\"},{\"asset\":\"mover\",\"command\":\"show\",\"type\":\"command\"},{\"tween\":{\"to\":[{\"duration\":0,\"ease\":\"linear\",\"__cdata\":\"{\\\"x\\\":47,\\\"y\\\":45}\"},{\"duration\":1000,\"ease\":\"sineInOut\",\"__cdata\":\"{\\\"x\\\":62,\\\"y\\\":45}\"},{\"duration\":1000,\"ease\":\"sineInOut\",\"__cdata\":\"{\\\"x\\\":47,\\\"y\\\":45}\"}],\"id\":\"mover\",\"loop\":true},\"asset\":\"mover\",\"type\":\"animation\"}],\"type\":\"rec_started\"},{\"action\":[{\"asset\":\"stoprec\",\"command\":\"hide\",\"type\":\"command\"},{\"asset\":\"mover\",\"command\":\"hide\",\"type\":\"command\"},{\"asset\":\"playback\",\"command\":\"show\",\"type\":\"command\"}],\"type\":\"rec_stopped\"},{\"action\":{\"type\":\"command\",\"command\":\"play\",\"asset\":\"domain_4111\",\"loop\":1},\"type\":\"enter\"},{\"action\":{\"type\":\"command\",\"command\":\"stop\",\"asset\":\"domain_4111\",\"loop\":1},\"type\":\"exit\"}]},\"image\":[{\"x\":25.8,\"y\":42.58,\"w\":48.61,\"h\":54.44,\"visible\":true,\"editable\":true,\"asset\":\"domain_4088\",\"z-index\":0},{\"x\":45,\"y\":80,\"w\":10,\"h\":18,\"visible\":true,\"editable\":true,\"asset\":\"mic\",\"event\":{\"action\":{\"asset\":\"recorder\",\"command\":\"toggleShow\",\"type\":\"command\"},\"type\":\"click\"},\"z-index\":1}],\"text\":[{\"x\":7.92,\"y\":7.56,\"w\":158.22,\"h\":38.45,\"visible\":true,\"editable\":true,\"__text\":\"        कुत्ते को एक रोटी मिली। \\nरोटी लेकर वह तालाब के किनारे गया । \\n\",\"weight\":\"normal\",\"font\":\"Helvetica\",\"color\":\"rgb(0,0,0)\",\"fontstyle\":\"\",\"fontsize\":117,\"lineHeight\":1.3,\"align\":\"left\",\"z-index\":2}],\"shape\":[],\"hotspot\":[],\"embed\":[],\"div\":[],\"audio\":[{\"asset\":\"domain_4111\"},{\"asset\":\"domain_7490\"},{\"asset\":\"domain_7491\"},{\"asset\":\"domain_7492\"},{\"asset\":\"domain_7493\"},{\"asset\":\"domain_7494\"},{\"asset\":\"domain_7495\"},{\"asset\":\"domain_7496\"},{\"asset\":\"domain_7497\"},{\"asset\":\"domain_7498\"},{\"asset\":\"domain_7499\"},{\"asset\":\"domain_7500\"},{\"asset\":\"domain_7501\"}],\"scribble\":[],\"htext\":[],\"g\":[{\"x\":0,\"y\":0,\"w\":100,\"h\":100,\"visible\":false,\"editable\":true,\"g\":[{\"image\":{\"event\":{\"action\":{\"asset\":\"recorder\",\"command\":\"hide\",\"type\":\"command\"},\"type\":\"click\"},\"asset\":\"blacktint\",\"h\":100,\"w\":100,\"x\":0,\"y\":0},\"h\":100,\"w\":100,\"x\":0,\"y\":0},{\"shape\":[{\"fill\":\"gray\",\"h\":20,\"type\":\"roundrect\",\"w\":30,\"x\":36,\"y\":37},{\"event\":{\"action\":{\"asset\":\"startrec\",\"command\":\"startRecord\",\"failure\":\"rec_start_fail\",\"success\":\"rec_started\",\"type\":\"command\"},\"type\":\"click\"},\"fill\":\"#34e941\",\"h\":20,\"type\":\"roundrect\",\"w\":30,\"x\":35,\"y\":35}],\"image\":{\"asset\":\"record\",\"h\":10,\"w\":6,\"x\":38,\"y\":40},\"text\":{\"color\":\"darkgreen\",\"font\":\"sans-serif\",\"fontsize\":50,\"h\":5,\"w\":20,\"x\":47,\"y\":43,\"__text\":\"Start\"},\"h\":100,\"id\":\"startrec\",\"w\":100,\"x\":0,\"y\":0},{\"shape\":[{\"fill\":\"gray\",\"h\":20,\"type\":\"roundrect\",\"w\":30,\"x\":36,\"y\":37},{\"event\":{\"action\":{\"asset\":\"stoprec\",\"command\":\"stopRecord\",\"failure\":\"rec_stop_failed\",\"success\":\"rec_stopped\",\"type\":\"command\"},\"type\":\"click\"},\"fill\":\"#e93441\",\"h\":20,\"type\":\"roundrect\",\"w\":30,\"x\":35,\"y\":35},{\"fill\":\"#e98888\",\"h\":2,\"id\":\"mover\",\"type\":\"circle\",\"visible\":false,\"w\":2,\"x\":47,\"y\":45}],\"image\":{\"asset\":\"stop_record\",\"h\":10,\"w\":6,\"x\":38,\"y\":40},\"h\":100,\"id\":\"stoprec\",\"visible\":false,\"w\":100,\"x\":0,\"y\":0},{\"shape\":[{\"fill\":\"gray\",\"h\":20,\"type\":\"roundrect\",\"w\":30,\"x\":36,\"y\":37},{\"event\":{\"action\":[{\"asset\":\"current_rec\",\"command\":\"TOGGLEPLAY\",\"type\":\"command\"},{\"asset\":\"recorder\",\"command\":\"hide\",\"type\":\"command\"},{\"asset\":\"playback\",\"command\":\"hide\",\"type\":\"command\"},{\"asset\":\"startrec\",\"command\":\"show\",\"type\":\"command\"}],\"type\":\"click\"},\"fill\":\"#34e941\",\"h\":20,\"type\":\"roundrect\",\"w\":30,\"x\":35,\"y\":35}],\"image\":{\"asset\":\"icon_sound\",\"h\":10,\"id\":\"story_audio_button\",\"w\":6,\"x\":38,\"y\":40},\"text\":{\"color\":\"darkgreen\",\"font\":\"sans-serif\",\"fontsize\":50,\"h\":5,\"w\":20,\"x\":47,\"y\":43,\"__text\":\"Play\"},\"h\":100,\"id\":\"playback\",\"visible\":false,\"w\":100,\"x\":0,\"y\":0}],\"id\":\"recorder\",\"z-index\":3}],\"appEvents\":{\"list\":\"rec_started,rec_start_fail,rec_stopped,rec_stop_failed\"},\"preload\":true},{\"id\":\"recordAudio7\",\"x\":0,\"y\":0,\"w\":100,\"h\":100,\"param\":[{\"name\":\"previousScreen\",\"value\":\"recordAudio6\"},{\"name\":\"nextScreen\",\"value\":\"recordAudio8\"},{\"name\":\"next\",\"value\":\"recordAudio8\"},{\"name\":\"previous\",\"value\":\"recordAudio6\"}],\"events\":{\"event\":[{\"action\":[{\"asset\":\"startrec\",\"command\":\"hide\",\"type\":\"command\"},{\"asset\":\"stoprec\",\"command\":\"show\",\"type\":\"command\"},{\"asset\":\"mover\",\"command\":\"show\",\"type\":\"command\"},{\"tween\":{\"to\":[{\"duration\":0,\"ease\":\"linear\",\"__cdata\":\"{\\\"x\\\":47,\\\"y\\\":45}\"},{\"duration\":1000,\"ease\":\"sineInOut\",\"__cdata\":\"{\\\"x\\\":62,\\\"y\\\":45}\"},{\"duration\":1000,\"ease\":\"sineInOut\",\"__cdata\":\"{\\\"x\\\":47,\\\"y\\\":45}\"}],\"id\":\"mover\",\"loop\":true},\"asset\":\"mover\",\"type\":\"animation\"}],\"type\":\"rec_started\"},{\"action\":[{\"asset\":\"stoprec\",\"command\":\"hide\",\"type\":\"command\"},{\"asset\":\"mover\",\"command\":\"hide\",\"type\":\"command\"},{\"asset\":\"playback\",\"command\":\"show\",\"type\":\"command\"}],\"type\":\"rec_stopped\"},{\"action\":{\"type\":\"command\",\"command\":\"play\",\"asset\":\"domain_4109\",\"loop\":1},\"type\":\"enter\"},{\"action\":{\"type\":\"command\",\"command\":\"stop\",\"asset\":\"domain_4109\",\"loop\":1},\"type\":\"exit\"}]},\"image\":[{\"x\":27.19,\"y\":41.69,\"w\":48.61,\"h\":54.44,\"visible\":true,\"editable\":true,\"asset\":\"domain_4088\",\"z-index\":0},{\"x\":45,\"y\":80,\"w\":10,\"h\":18,\"visible\":true,\"editable\":true,\"asset\":\"mic\",\"event\":{\"action\":{\"asset\":\"recorder\",\"command\":\"toggleShow\",\"type\":\"command\"},\"type\":\"click\"},\"z-index\":1}],\"text\":[{\"x\":10.28,\"y\":3.56,\"w\":125.72,\"h\":12.82,\"visible\":true,\"editable\":true,\"__text\":\"पानी में उसे अपनी परछाई दिखाई दी |\",\"weight\":\"normal\",\"font\":\"Helvetica\",\"color\":\"rgb(0,0,0)\",\"fontstyle\":\"\",\"fontsize\":117,\"lineHeight\":1.3,\"align\":\"left\",\"z-index\":2},{\"x\":16.67,\"y\":16,\"w\":155.72,\"h\":12.82,\"visible\":true,\"editable\":true,\"__text\":\"उसे लगा दूसरे कुत्ते के पास भी \",\"weight\":\"normal\",\"font\":\"Helvetica\",\"color\":\"#000000\",\"fontstyle\":\"\",\"fontsize\":117,\"lineHeight\":1.3,\"align\":\"left\",\"z-index\":3},{\"x\":36.81,\"y\":29.56,\"w\":48.61,\"h\":12.82,\"visible\":true,\"editable\":true,\"__text\":\"एक रोटी है।\",\"weight\":\"normal\",\"font\":\"Helvetica\",\"color\":\"#000000\",\"fontstyle\":\"\",\"fontsize\":117,\"lineHeight\":1.3,\"align\":\"left\",\"z-index\":4}],\"shape\":[],\"hotspot\":[],\"embed\":[],\"div\":[],\"audio\":[{\"asset\":\"domain_4109\"},{\"asset\":\"domain_7502\"},{\"asset\":\"domain_7503\"},{\"asset\":\"domain_7504\"},{\"asset\":\"domain_7505\"},{\"asset\":\"domain_7506\"},{\"asset\":\"domain_7507\"},{\"asset\":\"domain_7508\"},{\"asset\":\"domain_7509\"},{\"asset\":\"domain_7510\"},{\"asset\":\"domain_7511\"},{\"asset\":\"domain_7512\"},{\"asset\":\"domain_7513\"},{\"asset\":\"domain_7514\"},{\"asset\":\"domain_7515\"},{\"asset\":\"domain_7516\"},{\"asset\":\"domain_10530\"}],\"scribble\":[],\"htext\":[],\"g\":[{\"x\":0,\"y\":0,\"w\":100,\"h\":100,\"visible\":false,\"editable\":true,\"g\":[{\"image\":{\"event\":{\"action\":{\"asset\":\"recorder\",\"command\":\"hide\",\"type\":\"command\"},\"type\":\"click\"},\"asset\":\"blacktint\",\"h\":100,\"w\":100,\"x\":0,\"y\":0},\"h\":100,\"w\":100,\"x\":0,\"y\":0},{\"shape\":[{\"fill\":\"gray\",\"h\":20,\"type\":\"roundrect\",\"w\":30,\"x\":36,\"y\":37},{\"event\":{\"action\":{\"asset\":\"startrec\",\"command\":\"startRecord\",\"failure\":\"rec_start_fail\",\"success\":\"rec_started\",\"type\":\"command\"},\"type\":\"click\"},\"fill\":\"#34e941\",\"h\":20,\"type\":\"roundrect\",\"w\":30,\"x\":35,\"y\":35}],\"image\":{\"asset\":\"record\",\"h\":10,\"w\":6,\"x\":38,\"y\":40},\"text\":{\"color\":\"darkgreen\",\"font\":\"sans-serif\",\"fontsize\":50,\"h\":5,\"w\":20,\"x\":47,\"y\":43,\"__text\":\"Start\"},\"h\":100,\"id\":\"startrec\",\"w\":100,\"x\":0,\"y\":0},{\"shape\":[{\"fill\":\"gray\",\"h\":20,\"type\":\"roundrect\",\"w\":30,\"x\":36,\"y\":37},{\"event\":{\"action\":{\"asset\":\"stoprec\",\"command\":\"stopRecord\",\"failure\":\"rec_stop_failed\",\"success\":\"rec_stopped\",\"type\":\"command\"},\"type\":\"click\"},\"fill\":\"#e93441\",\"h\":20,\"type\":\"roundrect\",\"w\":30,\"x\":35,\"y\":35},{\"fill\":\"#e98888\",\"h\":2,\"id\":\"mover\",\"type\":\"circle\",\"visible\":false,\"w\":2,\"x\":47,\"y\":45}],\"image\":{\"asset\":\"stop_record\",\"h\":10,\"w\":6,\"x\":38,\"y\":40},\"h\":100,\"id\":\"stoprec\",\"visible\":false,\"w\":100,\"x\":0,\"y\":0},{\"shape\":[{\"fill\":\"gray\",\"h\":20,\"type\":\"roundrect\",\"w\":30,\"x\":36,\"y\":37},{\"event\":{\"action\":[{\"asset\":\"current_rec\",\"command\":\"TOGGLEPLAY\",\"type\":\"command\"},{\"asset\":\"recorder\",\"command\":\"hide\",\"type\":\"command\"},{\"asset\":\"playback\",\"command\":\"hide\",\"type\":\"command\"},{\"asset\":\"startrec\",\"command\":\"show\",\"type\":\"command\"}],\"type\":\"click\"},\"fill\":\"#34e941\",\"h\":20,\"type\":\"roundrect\",\"w\":30,\"x\":35,\"y\":35}],\"image\":{\"asset\":\"icon_sound\",\"h\":10,\"id\":\"story_audio_button\",\"w\":6,\"x\":38,\"y\":40},\"text\":{\"color\":\"darkgreen\",\"font\":\"sans-serif\",\"fontsize\":50,\"h\":5,\"w\":20,\"x\":47,\"y\":43,\"__text\":\"Play\"},\"h\":100,\"id\":\"playback\",\"visible\":false,\"w\":100,\"x\":0,\"y\":0}],\"id\":\"recorder\",\"z-index\":5}],\"appEvents\":{\"list\":\"rec_started,rec_start_fail,rec_stopped,rec_stop_failed\"}},{\"id\":\"recordAudio8\",\"x\":0,\"y\":0,\"w\":100,\"h\":100,\"param\":[{\"name\":\"previousScreen\",\"value\":\"recordAudio7\"},{\"name\":\"nextScreen\",\"value\":\"recordAudio9\"},{\"name\":\"next\",\"value\":\"recordAudio9\"},{\"name\":\"previous\",\"value\":\"recordAudio7\"}],\"events\":{\"event\":[{\"action\":[{\"asset\":\"startrec\",\"command\":\"hide\",\"type\":\"command\"},{\"asset\":\"stoprec\",\"command\":\"show\",\"type\":\"command\"},{\"asset\":\"mover\",\"command\":\"show\",\"type\":\"command\"},{\"tween\":{\"to\":[{\"duration\":0,\"ease\":\"linear\",\"__cdata\":\"{\\\"x\\\":47,\\\"y\\\":45}\"},{\"duration\":1000,\"ease\":\"sineInOut\",\"__cdata\":\"{\\\"x\\\":62,\\\"y\\\":45}\"},{\"duration\":1000,\"ease\":\"sineInOut\",\"__cdata\":\"{\\\"x\\\":47,\\\"y\\\":45}\"}],\"id\":\"mover\",\"loop\":true},\"asset\":\"mover\",\"type\":\"animation\"}],\"type\":\"rec_started\"},{\"action\":[{\"asset\":\"stoprec\",\"command\":\"hide\",\"type\":\"command\"},{\"asset\":\"mover\",\"command\":\"hide\",\"type\":\"command\"},{\"asset\":\"playback\",\"command\":\"show\",\"type\":\"command\"}],\"type\":\"rec_stopped\"},{\"action\":{\"type\":\"command\",\"command\":\"play\",\"asset\":\"domain_4107\",\"loop\":1},\"type\":\"enter\"},{\"action\":{\"type\":\"command\",\"command\":\"stop\",\"asset\":\"domain_4107\",\"loop\":1},\"type\":\"exit\"}]},\"image\":[{\"x\":25.38,\"y\":40.8,\"w\":48.61,\"h\":54.44,\"visible\":true,\"editable\":true,\"asset\":\"domain_4088\",\"z-index\":0},{\"x\":45,\"y\":80,\"w\":10,\"h\":18,\"visible\":true,\"editable\":true,\"asset\":\"mic\",\"event\":{\"action\":{\"asset\":\"recorder\",\"command\":\"toggleShow\",\"type\":\"command\"},\"type\":\"click\"},\"z-index\":1}],\"text\":[{\"x\":7.92,\"y\":12.22,\"w\":129.88,\"h\":12.82,\"visible\":true,\"editable\":true,\"__text\":\"वह रोटी छीनने का तरीका सोचने लगा।\",\"weight\":\"normal\",\"font\":\"Helvetica\",\"color\":\"rgb(0,0,0)\",\"fontstyle\":\"\",\"fontsize\":117,\"lineHeight\":1.3,\"align\":\"left\",\"z-index\":2},{\"x\":13.89,\"y\":25.11,\"w\":123.08,\"h\":12.82,\"visible\":true,\"editable\":true,\"__text\":\"उसने भौंकने के लिए मुँह खोला।\",\"weight\":\"normal\",\"font\":\"Helvetica\",\"color\":\"#000000\",\"fontstyle\":\"\",\"fontsize\":117,\"lineHeight\":1.3,\"align\":\"left\",\"z-index\":3}],\"shape\":[],\"hotspot\":[],\"embed\":[],\"div\":[],\"audio\":[{\"asset\":\"domain_4107\"},{\"asset\":\"domain_7517\"},{\"asset\":\"domain_7518\"},{\"asset\":\"domain_7519\"},{\"asset\":\"domain_7520\"},{\"asset\":\"domain_7521\"},{\"asset\":\"domain_7522\"},{\"asset\":\"domain_7523\"},{\"asset\":\"domain_7526\"},{\"asset\":\"domain_7530\"},{\"asset\":\"domain_7531\"},{\"asset\":\"domain_7533\"},{\"asset\":\"domain_7537\"},{\"asset\":\"domain_7545\"}],\"scribble\":[],\"htext\":[],\"g\":[{\"x\":0,\"y\":0,\"w\":100,\"h\":100,\"visible\":false,\"editable\":true,\"g\":[{\"image\":{\"event\":{\"action\":{\"asset\":\"recorder\",\"command\":\"hide\",\"type\":\"command\"},\"type\":\"click\"},\"asset\":\"blacktint\",\"h\":100,\"w\":100,\"x\":0,\"y\":0},\"h\":100,\"w\":100,\"x\":0,\"y\":0},{\"shape\":[{\"fill\":\"gray\",\"h\":20,\"type\":\"roundrect\",\"w\":30,\"x\":36,\"y\":37},{\"event\":{\"action\":{\"asset\":\"startrec\",\"command\":\"startRecord\",\"failure\":\"rec_start_fail\",\"success\":\"rec_started\",\"type\":\"command\"},\"type\":\"click\"},\"fill\":\"#34e941\",\"h\":20,\"type\":\"roundrect\",\"w\":30,\"x\":35,\"y\":35}],\"image\":{\"asset\":\"record\",\"h\":10,\"w\":6,\"x\":38,\"y\":40},\"text\":{\"color\":\"darkgreen\",\"font\":\"sans-serif\",\"fontsize\":50,\"h\":5,\"w\":20,\"x\":47,\"y\":43,\"__text\":\"Start\"},\"h\":100,\"id\":\"startrec\",\"w\":100,\"x\":0,\"y\":0},{\"shape\":[{\"fill\":\"gray\",\"h\":20,\"type\":\"roundrect\",\"w\":30,\"x\":36,\"y\":37},{\"event\":{\"action\":{\"asset\":\"stoprec\",\"command\":\"stopRecord\",\"failure\":\"rec_stop_failed\",\"success\":\"rec_stopped\",\"type\":\"command\"},\"type\":\"click\"},\"fill\":\"#e93441\",\"h\":20,\"type\":\"roundrect\",\"w\":30,\"x\":35,\"y\":35},{\"fill\":\"#e98888\",\"h\":2,\"id\":\"mover\",\"type\":\"circle\",\"visible\":false,\"w\":2,\"x\":47,\"y\":45}],\"image\":{\"asset\":\"stop_record\",\"h\":10,\"w\":6,\"x\":38,\"y\":40},\"h\":100,\"id\":\"stoprec\",\"visible\":false,\"w\":100,\"x\":0,\"y\":0},{\"shape\":[{\"fill\":\"gray\",\"h\":20,\"type\":\"roundrect\",\"w\":30,\"x\":36,\"y\":37},{\"event\":{\"action\":[{\"asset\":\"current_rec\",\"command\":\"TOGGLEPLAY\",\"type\":\"command\"},{\"asset\":\"recorder\",\"command\":\"hide\",\"type\":\"command\"},{\"asset\":\"playback\",\"command\":\"hide\",\"type\":\"command\"},{\"asset\":\"startrec\",\"command\":\"show\",\"type\":\"command\"}],\"type\":\"click\"},\"fill\":\"#34e941\",\"h\":20,\"type\":\"roundrect\",\"w\":30,\"x\":35,\"y\":35}],\"image\":{\"asset\":\"icon_sound\",\"h\":10,\"id\":\"story_audio_button\",\"w\":6,\"x\":38,\"y\":40},\"text\":{\"color\":\"darkgreen\",\"font\":\"sans-serif\",\"fontsize\":50,\"h\":5,\"w\":20,\"x\":47,\"y\":43,\"__text\":\"Play\"},\"h\":100,\"id\":\"playback\",\"visible\":false,\"w\":100,\"x\":0,\"y\":0}],\"id\":\"recorder\",\"z-index\":4}],\"appEvents\":{\"list\":\"rec_started,rec_start_fail,rec_stopped,rec_stop_failed\"}},{\"id\":\"recordAudio9\",\"x\":0,\"y\":0,\"w\":100,\"h\":100,\"param\":[{\"name\":\"previousScreen\",\"value\":\"recordAudio8\"},{\"name\":\"nextScreen\",\"value\":\"endScreen\"},{\"name\":\"next\",\"value\":\"scenec03f4d91-0caa-44b4-8e60-94f53d6617dd\"},{\"name\":\"previous\",\"value\":\"recordAudio8\"}],\"events\":{\"event\":[{\"action\":[{\"asset\":\"startrec\",\"command\":\"hide\",\"type\":\"command\"},{\"asset\":\"stoprec\",\"command\":\"show\",\"type\":\"command\"},{\"asset\":\"mover\",\"command\":\"show\",\"type\":\"command\"},{\"tween\":{\"to\":[{\"duration\":0,\"ease\":\"linear\",\"__cdata\":\"{\\\"x\\\":47,\\\"y\\\":45}\"},{\"duration\":1000,\"ease\":\"sineInOut\",\"__cdata\":\"{\\\"x\\\":62,\\\"y\\\":45}\"},{\"duration\":1000,\"ease\":\"sineInOut\",\"__cdata\":\"{\\\"x\\\":47,\\\"y\\\":45}\"}],\"id\":\"mover\",\"loop\":true},\"asset\":\"mover\",\"type\":\"animation\"}],\"type\":\"rec_started\"},{\"action\":[{\"asset\":\"stoprec\",\"command\":\"hide\",\"type\":\"command\"},{\"asset\":\"mover\",\"command\":\"hide\",\"type\":\"command\"},{\"asset\":\"playback\",\"command\":\"show\",\"type\":\"command\"}],\"type\":\"rec_stopped\"},{\"action\":{\"type\":\"command\",\"command\":\"play\",\"asset\":\"domain_4106\",\"loop\":1},\"type\":\"enter\"},{\"action\":{\"type\":\"command\",\"command\":\"stop\",\"asset\":\"domain_4106\",\"loop\":1},\"type\":\"exit\"}]},\"image\":[{\"x\":26.63,\"y\":38.8,\"w\":48.61,\"h\":54.44,\"visible\":true,\"editable\":true,\"asset\":\"domain_4088\",\"z-index\":0},{\"x\":45,\"y\":80,\"w\":10,\"h\":18,\"visible\":true,\"editable\":true,\"asset\":\"mic\",\"event\":{\"action\":{\"asset\":\"recorder\",\"command\":\"toggleShow\",\"type\":\"command\"},\"type\":\"click\"},\"z-index\":1}],\"text\":[{\"x\":7.92,\"y\":12.89,\"w\":152.38,\"h\":12.82,\"visible\":true,\"editable\":true,\"__text\":\"मुँह खोलते ही रोटी तालाब में गिर गई।\",\"weight\":\"normal\",\"font\":\"Helvetica\",\"color\":\"rgb(0,0,0)\",\"fontstyle\":\"\",\"fontsize\":117,\"lineHeight\":1.3,\"align\":\"left\",\"z-index\":2}],\"shape\":[],\"hotspot\":[],\"embed\":[],\"div\":[],\"audio\":[{\"asset\":\"domain_4106\"},{\"asset\":\"domain_7546\"},{\"asset\":\"domain_7547\"},{\"asset\":\"domain_7548\"},{\"asset\":\"domain_7549\"},{\"asset\":\"domain_7556\"},{\"asset\":\"domain_7557\"},{\"asset\":\"domain_7558\"},{\"asset\":\"domain_7559\"}],\"scribble\":[],\"htext\":[],\"g\":[{\"x\":0,\"y\":0,\"w\":100,\"h\":100,\"visible\":false,\"editable\":true,\"g\":[{\"image\":{\"event\":{\"action\":{\"asset\":\"recorder\",\"command\":\"hide\",\"type\":\"command\"},\"type\":\"click\"},\"asset\":\"blacktint\",\"h\":100,\"w\":100,\"x\":0,\"y\":0},\"h\":100,\"w\":100,\"x\":0,\"y\":0},{\"shape\":[{\"fill\":\"gray\",\"h\":20,\"type\":\"roundrect\",\"w\":30,\"x\":36,\"y\":37},{\"event\":{\"action\":{\"asset\":\"startrec\",\"command\":\"startRecord\",\"failure\":\"rec_start_fail\",\"success\":\"rec_started\",\"type\":\"command\"},\"type\":\"click\"},\"fill\":\"#34e941\",\"h\":20,\"type\":\"roundrect\",\"w\":30,\"x\":35,\"y\":35}],\"image\":{\"asset\":\"record\",\"h\":10,\"w\":6,\"x\":38,\"y\":40},\"text\":{\"color\":\"darkgreen\",\"font\":\"sans-serif\",\"fontsize\":50,\"h\":5,\"w\":20,\"x\":47,\"y\":43,\"__text\":\"Start\"},\"h\":100,\"id\":\"startrec\",\"w\":100,\"x\":0,\"y\":0},{\"shape\":[{\"fill\":\"gray\",\"h\":20,\"type\":\"roundrect\",\"w\":30,\"x\":36,\"y\":37},{\"event\":{\"action\":{\"asset\":\"stoprec\",\"command\":\"stopRecord\",\"failure\":\"rec_stop_failed\",\"success\":\"rec_stopped\",\"type\":\"command\"},\"type\":\"click\"},\"fill\":\"#e93441\",\"h\":20,\"type\":\"roundrect\",\"w\":30,\"x\":35,\"y\":35},{\"fill\":\"#e98888\",\"h\":2,\"id\":\"mover\",\"type\":\"circle\",\"visible\":false,\"w\":2,\"x\":47,\"y\":45}],\"image\":{\"asset\":\"stop_record\",\"h\":10,\"w\":6,\"x\":38,\"y\":40},\"h\":100,\"id\":\"stoprec\",\"visible\":false,\"w\":100,\"x\":0,\"y\":0},{\"shape\":[{\"fill\":\"gray\",\"h\":20,\"type\":\"roundrect\",\"w\":30,\"x\":36,\"y\":37},{\"event\":{\"action\":[{\"asset\":\"current_rec\",\"command\":\"TOGGLEPLAY\",\"type\":\"command\"},{\"asset\":\"recorder\",\"command\":\"hide\",\"type\":\"command\"},{\"asset\":\"playback\",\"command\":\"hide\",\"type\":\"command\"},{\"asset\":\"startrec\",\"command\":\"show\",\"type\":\"command\"}],\"type\":\"click\"},\"fill\":\"#34e941\",\"h\":20,\"type\":\"roundrect\",\"w\":30,\"x\":35,\"y\":35}],\"image\":{\"asset\":\"icon_sound\",\"h\":10,\"id\":\"story_audio_button\",\"w\":6,\"x\":38,\"y\":40},\"text\":{\"color\":\"darkgreen\",\"font\":\"sans-serif\",\"fontsize\":50,\"h\":5,\"w\":20,\"x\":47,\"y\":43,\"__text\":\"Play\"},\"h\":100,\"id\":\"playback\",\"visible\":false,\"w\":100,\"x\":0,\"y\":0}],\"id\":\"recorder\",\"z-index\":3}],\"appEvents\":{\"list\":\"rec_started,rec_start_fail,rec_stopped,rec_stop_failed\"}},{\"id\":\"scenec03f4d91-0caa-44b4-8e60-94f53d6617dd\",\"x\":0,\"y\":0,\"w\":100,\"h\":100,\"param\":[{\"name\":\"next\",\"value\":\"scene043478c9-8885-4cd3-94e5-88e07e3664fc\"},{\"name\":\"previous\",\"value\":\"recordAudio9\"}],\"events\":{\"event\":[{\"action\":{\"type\":\"command\",\"command\":\"play\",\"asset\":\"domain_10651\",\"loop\":1},\"type\":\"enter\"},{\"action\":{\"type\":\"command\",\"command\":\"stop\",\"asset\":\"domain_10651\",\"loop\":1},\"type\":\"exit\"}]},\"image\":[],\"text\":[{\"x\":22.5,\"y\":9.33,\"w\":85.35,\"h\":12.82,\"visible\":true,\"editable\":true,\"__text\":\"शब्द को छूएं और सुनें \",\"weight\":\"bold\",\"font\":\"Helvetica\",\"color\":\"#000000\",\"fontstyle\":\"\",\"fontsize\":117,\"lineHeight\":1.3,\"align\":\"left\",\"z-index\":0},{\"x\":62.22,\"y\":29.33,\"w\":48.61,\"h\":12.82,\"visible\":true,\"editable\":true,\"__text\":\"भौंकने\",\"weight\":\"normal\",\"font\":\"Helvetica\",\"color\":\"#000000\",\"fontstyle\":\"\",\"fontsize\":117,\"lineHeight\":1.3,\"align\":\"left\",\"z-index\":2},{\"x\":19.31,\"y\":29.56,\"w\":48.61,\"h\":12.82,\"visible\":true,\"editable\":true,\"__text\":\"कुत्ते\",\"weight\":\"normal\",\"font\":\"Helvetica\",\"color\":\"#000000\",\"fontstyle\":\"\",\"fontsize\":117,\"lineHeight\":1.3,\"align\":\"left\",\"z-index\":3},{\"x\":39.44,\"y\":57.33,\"w\":48.61,\"h\":12.82,\"visible\":true,\"editable\":true,\"__text\":\" छीनने\",\"weight\":\"normal\",\"font\":\"Helvetica\",\"color\":\"#000000\",\"fontstyle\":\"\",\"fontsize\":117,\"lineHeight\":1.3,\"align\":\"left\",\"z-index\":6},{\"x\":16.11,\"y\":56,\"w\":20.42,\"h\":12.82,\"visible\":true,\"editable\":true,\"__text\":\"परछाई\",\"weight\":\"normal\",\"font\":\"Helvetica\",\"color\":\"#000000\",\"fontstyle\":\"\",\"fontsize\":117,\"lineHeight\":1.3,\"align\":\"left\",\"z-index\":7},{\"x\":64.58,\"y\":56.22,\"w\":48.61,\"h\":12.82,\"visible\":true,\"editable\":true,\"__text\":\"तरीका\",\"weight\":\"normal\",\"font\":\"Helvetica\",\"color\":\"#000000\",\"fontstyle\":\"\",\"fontsize\":117,\"lineHeight\":1.3,\"align\":\"left\",\"z-index\":8}],\"shape\":[],\"hotspot\":[{\"x\":20.42,\"y\":29.78,\"w\":7.5,\"h\":10.44,\"visible\":true,\"editable\":true,\"type\":\"roundrect\",\"radius\":1,\"fill\":\"red\",\"stroke-width\":1,\"hitArea\":true,\"event\":[{\"action\":[{\"type\":\"command\",\"command\":\"play\",\"asset\":\"domain_10642\"}],\"type\":\"click\"}],\"keyword\":\"\",\"z-index\":1},{\"x\":62.33,\"y\":29.81,\"w\":15.83,\"h\":7.78,\"visible\":true,\"editable\":true,\"type\":\"roundrect\",\"radius\":1,\"fill\":\"red\",\"stroke-width\":1,\"hitArea\":true,\"event\":[{\"action\":[{\"type\":\"command\",\"command\":\"play\",\"asset\":\"domain_10644\"}],\"type\":\"click\"}],\"keyword\":\"\",\"z-index\":4},{\"x\":40,\"y\":55.59,\"w\":15.14,\"h\":12.22,\"visible\":true,\"editable\":true,\"type\":\"roundrect\",\"radius\":1,\"fill\":\"red\",\"stroke-width\":1,\"hitArea\":true,\"event\":[{\"action\":[{\"type\":\"command\",\"command\":\"play\",\"asset\":\"domain_10650\"}],\"type\":\"click\"}],\"keyword\":\"\",\"z-index\":5},{\"x\":16.25,\"y\":56.44,\"w\":17.08,\"h\":10,\"visible\":true,\"editable\":true,\"type\":\"roundrect\",\"radius\":1,\"fill\":\"red\",\"stroke-width\":1,\"hitArea\":true,\"event\":[{\"action\":[{\"type\":\"command\",\"command\":\"play\",\"asset\":\"do_30032054\"}],\"type\":\"click\"}],\"keyword\":\"\",\"z-index\":9},{\"x\":65.28,\"y\":54.22,\"w\":13.89,\"h\":14.22,\"visible\":true,\"editable\":true,\"type\":\"roundrect\",\"radius\":1,\"fill\":\"red\",\"stroke-width\":1,\"hitArea\":true,\"event\":[{\"action\":[{\"type\":\"command\",\"command\":\"play\",\"asset\":\"do_30032055\"}],\"type\":\"click\"}],\"keyword\":\"\",\"z-index\":10}],\"embed\":[],\"div\":[],\"audio\":[{\"asset\":\"domain_10639\"},{\"asset\":\"domain_10642\"},{\"asset\":\"domain_10644\"},{\"asset\":\"domain_10650\"},{\"asset\":\"domain_10651\"},{\"asset\":\"do_30032054\"},{\"asset\":\"do_30032055\"}],\"scribble\":[],\"htext\":[],\"g\":[]},{\"id\":\"scene043478c9-8885-4cd3-94e5-88e07e3664fc\",\"x\":0,\"y\":0,\"w\":100,\"h\":100,\"param\":[{\"name\":\"next\",\"value\":\"scenef287cc18-da71-443f-a858-537ef54c6680\"},{\"name\":\"previous\",\"value\":\"scenec03f4d91-0caa-44b4-8e60-94f53d6617dd\"}],\"events\":{\"event\":[]},\"image\":[{\"x\":29.44,\"y\":23.33,\"w\":43.75,\"h\":70,\"visible\":true,\"editable\":true,\"asset\":\"domain_4228\",\"z-index\":0}],\"text\":[{\"x\":32.5,\"y\":8.89,\"w\":48.61,\"h\":12.82,\"visible\":true,\"editable\":true,\"__text\":\"सवाल - जवाब\",\"weight\":\"bold\",\"font\":\"Helvetica\",\"color\":\"#000000\",\"fontstyle\":\"\",\"fontsize\":117,\"lineHeight\":1.3,\"align\":\"left\",\"z-index\":1}],\"shape\":[],\"hotspot\":[],\"embed\":[],\"div\":[],\"audio\":[],\"scribble\":[],\"htext\":[],\"g\":[]},{\"id\":\"scenef287cc18-da71-443f-a858-537ef54c6680\",\"x\":0,\"y\":0,\"w\":100,\"h\":100,\"param\":[{\"name\":\"next\",\"value\":\"scenee7dc6a6e-c476-402d-a766-de9c90902407\"},{\"name\":\"previous\",\"value\":\"scene043478c9-8885-4cd3-94e5-88e07e3664fc\"}],\"events\":{\"event\":[]},\"image\":[],\"text\":[{\"x\":23.06,\"y\":46.44,\"w\":98.89,\"h\":9.32,\"visible\":true,\"editable\":true,\"__text\":\"कुत्ता को रास्ते में क्या मिला?\",\"weight\":\"bold\",\"font\":\"Helvetica\",\"color\":\"#000000\",\"fontstyle\":\"\",\"fontsize\":85,\"lineHeight\":1.3,\"align\":\"left\",\"z-index\":0}],\"shape\":[],\"hotspot\":[{\"x\":19.44,\"y\":43.33,\"w\":60.69,\"h\":13.11,\"visible\":true,\"editable\":true,\"type\":\"roundrect\",\"radius\":1,\"fill\":\"rgb(166, 77, 121)\",\"stroke-width\":1,\"hitArea\":true,\"event\":[{\"action\":[{\"type\":\"command\",\"command\":\"togglePlay\",\"asset\":\"do_30082853\"}],\"type\":\"click\"}],\"keyword\":\"\",\"z-index\":1}],\"embed\":[],\"div\":[],\"audio\":[{\"asset\":\"do_30082853\"}],\"scribble\":[],\"htext\":[],\"g\":[]},{\"id\":\"scenee7dc6a6e-c476-402d-a766-de9c90902407\",\"x\":0,\"y\":0,\"w\":100,\"h\":100,\"param\":[{\"name\":\"next\",\"value\":\"sceneea28d2ce-2e74-4a2d-9980-0c7e56b5cdfa\"},{\"name\":\"previous\",\"value\":\"scenef287cc18-da71-443f-a858-537ef54c6680\"}],\"events\":{\"event\":[]},\"image\":[],\"text\":[{\"x\":12.5,\"y\":46.22,\"w\":119.03,\"h\":9.32,\"visible\":true,\"editable\":true,\"__text\":\"कुत्ता रोटी लेकर तालाब के पास क्यों गया?\",\"weight\":\"bold\",\"font\":\"Helvetica\",\"color\":\"#000000\",\"fontstyle\":\"\",\"fontsize\":85,\"lineHeight\":1.3,\"align\":\"left\",\"z-index\":0}],\"shape\":[],\"hotspot\":[{\"x\":11.81,\"y\":42.22,\"w\":77.36,\"h\":15.56,\"visible\":true,\"editable\":true,\"type\":\"roundrect\",\"radius\":1,\"fill\":\"rgb(53, 28, 117)\",\"stroke-width\":1,\"hitArea\":true,\"event\":[{\"action\":[{\"type\":\"command\",\"command\":\"togglePlay\",\"asset\":\"do_30082859\"}],\"type\":\"click\"}],\"keyword\":\"\",\"z-index\":1}],\"embed\":[],\"div\":[],\"audio\":[{\"asset\":\"do_30082859\"}],\"scribble\":[],\"htext\":[],\"g\":[]},{\"id\":\"sceneea28d2ce-2e74-4a2d-9980-0c7e56b5cdfa\",\"x\":0,\"y\":0,\"w\":100,\"h\":100,\"param\":[{\"name\":\"next\",\"value\":\"scene93ddb4bd-8d03-4d9b-bb74-048330dffe9b\"},{\"name\":\"previous\",\"value\":\"scenee7dc6a6e-c476-402d-a766-de9c90902407\"}],\"events\":{\"event\":[]},\"image\":[],\"text\":[{\"x\":20.28,\"y\":45.33,\"w\":88.06,\"h\":9.32,\"visible\":true,\"editable\":true,\"__text\":\"कुत्ता क्या सोचकर भौंकने लगा?\",\"weight\":\"bold\",\"font\":\"Helvetica\",\"color\":\"#000000\",\"fontstyle\":\"\",\"fontsize\":85,\"lineHeight\":1.3,\"align\":\"left\",\"z-index\":0}],\"shape\":[],\"hotspot\":[{\"x\":15.97,\"y\":41.78,\"w\":70,\"h\":14.22,\"visible\":true,\"editable\":true,\"type\":\"roundrect\",\"radius\":1,\"fill\":\"rgb(127, 96, 0)\",\"stroke-width\":1,\"hitArea\":true,\"event\":[{\"action\":[{\"type\":\"command\",\"command\":\"togglePlay\",\"asset\":\"do_30082862\"}],\"type\":\"click\"}],\"keyword\":\"\",\"z-index\":1}],\"embed\":[],\"div\":[],\"audio\":[{\"asset\":\"do_30082862\"}],\"scribble\":[],\"htext\":[],\"g\":[]},{\"id\":\"scene93ddb4bd-8d03-4d9b-bb74-048330dffe9b\",\"x\":0,\"y\":0,\"w\":100,\"h\":100,\"param\":[{\"name\":\"next\",\"value\":\"scenec7c78853-865b-4402-9896-59ed3600d08e\"},{\"name\":\"previous\",\"value\":\"sceneea28d2ce-2e74-4a2d-9980-0c7e56b5cdfa\"}],\"events\":{\"event\":[]},\"image\":[],\"text\":[{\"x\":9.58,\"y\":42,\"w\":125.56,\"h\":9.32,\"visible\":true,\"editable\":true,\"__text\":\"कौन-कौन से अनाज की रोटी बनाई जाती है?\",\"weight\":\"bold\",\"font\":\"Helvetica\",\"color\":\"#000000\",\"fontstyle\":\"\",\"fontsize\":85,\"lineHeight\":1.3,\"align\":\"left\",\"z-index\":0}],\"shape\":[],\"hotspot\":[{\"x\":9.03,\"y\":36.67,\"w\":80.69,\"h\":16.67,\"visible\":true,\"editable\":true,\"type\":\"roundrect\",\"radius\":1,\"fill\":\"rgb(17, 85, 204)\",\"stroke-width\":1,\"hitArea\":true,\"event\":[{\"action\":[{\"type\":\"command\",\"command\":\"togglePlay\",\"asset\":\"do_30082865\"}],\"type\":\"click\"}],\"keyword\":\"\",\"z-index\":1}],\"embed\":[],\"div\":[],\"audio\":[{\"asset\":\"do_30082865\"}],\"scribble\":[],\"htext\":[],\"g\":[]},{\"id\":\"scenec7c78853-865b-4402-9896-59ed3600d08e\",\"x\":0,\"y\":0,\"w\":100,\"h\":100,\"param\":[{\"name\":\"next\",\"value\":\"scenec8cab6a8-f6e9-4f37-ba22-5db1e0220534\"},{\"name\":\"previous\",\"value\":\"scene93ddb4bd-8d03-4d9b-bb74-048330dffe9b\"}],\"events\":{\"event\":[]},\"image\":[],\"text\":[{\"x\":26.11,\"y\":47.33,\"w\":76.39,\"h\":9.32,\"visible\":true,\"editable\":true,\"__text\":\"कुत्ता कैसा जानवर होता है?\",\"weight\":\"bold\",\"font\":\"Helvetica\",\"color\":\"#000000\",\"fontstyle\":\"\",\"fontsize\":85,\"lineHeight\":1.3,\"align\":\"left\",\"z-index\":0}],\"shape\":[],\"hotspot\":[{\"x\":23.19,\"y\":42,\"w\":57.08,\"h\":16,\"visible\":true,\"editable\":true,\"type\":\"roundrect\",\"radius\":1,\"fill\":\"rgb(241, 194, 50)\",\"stroke-width\":1,\"hitArea\":true,\"event\":[{\"action\":[{\"type\":\"command\",\"command\":\"togglePlay\",\"asset\":\"do_30082871\"}],\"type\":\"click\"}],\"keyword\":\"\",\"z-index\":1}],\"embed\":[],\"div\":[],\"audio\":[{\"asset\":\"do_30082871\"}],\"scribble\":[],\"htext\":[],\"g\":[]},{\"id\":\"scenec8cab6a8-f6e9-4f37-ba22-5db1e0220534\",\"x\":0,\"y\":0,\"w\":100,\"h\":100,\"param\":[{\"name\":\"next\",\"value\":\"scene7874c633-fcfb-495e-b013-be382cfa7db3\"},{\"name\":\"previous\",\"value\":\"scenec7c78853-865b-4402-9896-59ed3600d08e\"}],\"events\":{\"event\":[]},\"image\":[],\"text\":[{\"x\":15.14,\"y\":40.89,\"w\":72.22,\"h\":18.64,\"visible\":true,\"editable\":true,\"__text\":\"जब रोटी तालाब में गिर गई तो कुत्ता ने क्या किया?\",\"weight\":\"bold\",\"font\":\"Helvetica\",\"color\":\"rgb(0, 0, 0)\",\"fontstyle\":\"\",\"fontsize\":85,\"lineHeight\":1.3,\"align\":\"left\",\"z-index\":0}],\"shape\":[],\"hotspot\":[{\"x\":12.22,\"y\":36.44,\"w\":72.78,\"h\":22.22,\"visible\":true,\"editable\":true,\"type\":\"roundrect\",\"radius\":1,\"fill\":\"red\",\"stroke-width\":1,\"hitArea\":true,\"event\":[{\"action\":[{\"type\":\"command\",\"command\":\"togglePlay\",\"asset\":\"do_30082873\"}],\"type\":\"click\"}],\"keyword\":\"\",\"z-index\":1}],\"embed\":[],\"div\":[],\"audio\":[{\"asset\":\"do_30082873\"},{\"asset\":\"do_30082873\"}],\"scribble\":[],\"htext\":[],\"g\":[]},{\"id\":\"scene7874c633-fcfb-495e-b013-be382cfa7db3\",\"x\":0,\"y\":0,\"w\":100,\"h\":100,\"param\":[{\"name\":\"next\",\"value\":\"scenee9ba0aea-5717-4e5a-82bd-331ce4e6e4bc\"},{\"name\":\"previous\",\"value\":\"scenec8cab6a8-f6e9-4f37-ba22-5db1e0220534\"}],\"events\":{\"event\":[{\"action\":[{\"type\":\"command\",\"command\":\"play\",\"asset\":\"retry_audio\"},{\"type\":\"command\",\"command\":\"show\",\"asset\":\"retryDialog\"},{\"tween\":{\"to\":{\"ease\":\"bounceOut \",\"duration\":1500,\"__cdata\":{\"x\":20,\"y\":20,\"w\":40,\"h\":30}},\"id\":\"retryShowAnim\"},\"type\":\"animation\",\"asset\":\"retryDialog\"}],\"type\":\"wrong_response\"},{\"action\":[{\"type\":\"command\",\"command\":\"play\",\"asset\":\"goodjob_audio\"},{\"type\":\"command\",\"command\":\"show\",\"asset\":\"goodjobDialog\"},{\"tween\":{\"to\":{\"ease\":\"bounceOut\",\"duration\":1500,\"__cdata\":{\"x\":20,\"y\":20,\"w\":40,\"h\":30}},\"id\":\"gjShowAnim\"},\"type\":\"animation\",\"asset\":\"goodjobDialog\"}],\"type\":\"correct_response\"},{\"action\":[{\"type\":\"command\",\"command\":\"play\",\"asset\":\"retry_audio\"},{\"type\":\"command\",\"command\":\"show\",\"asset\":\"retryDialog\"},{\"tween\":{\"to\":{\"ease\":\"bounceOut \",\"duration\":1500,\"__cdata\":{\"x\":20,\"y\":20,\"w\":40,\"h\":30}},\"id\":\"retryShowAnim\"},\"type\":\"animation\",\"asset\":\"retryDialog\"}],\"type\":\"wrong_response\"},{\"action\":[{\"type\":\"command\",\"command\":\"play\",\"asset\":\"goodjob_audio\"},{\"type\":\"command\",\"command\":\"show\",\"asset\":\"goodjobDialog\"},{\"tween\":{\"to\":{\"ease\":\"bounceOut\",\"duration\":1500,\"__cdata\":{\"x\":20,\"y\":20,\"w\":40,\"h\":30}},\"id\":\"gjShowAnim\"},\"type\":\"animation\",\"asset\":\"goodjobDialog\"}],\"type\":\"correct_response\"},{\"action\":{\"type\":\"command\",\"command\":\"play\",\"asset\":\"domain_10514\",\"loop\":1},\"type\":\"enter\"},{\"action\":{\"type\":\"command\",\"command\":\"stop\",\"asset\":\"domain_10514\",\"loop\":1},\"type\":\"exit\"}]},\"image\":[{\"x\":91,\"y\":15,\"w\":0,\"h\":15,\"visible\":true,\"editable\":true,\"asset\":\"validate\",\"event\":{\"action\":[{\"type\":\"command\",\"command\":\"eval\",\"asset\":\"scene7874c633-fcfb-495e-b013-be382cfa7db3\",\"success\":\"correct_response\",\"failure\":\"wrong_response\"},{\"type\":\"command\",\"command\":\"HIDEHTMLELEMENTS\",\"asset\":\"scene7874c633-fcfb-495e-b013-be382cfa7db3\"}],\"type\":\"click\"},\"z-index\":0},{\"x\":91,\"y\":15,\"w\":0,\"h\":15,\"visible\":true,\"editable\":true,\"asset\":\"validate\",\"event\":{\"action\":[{\"type\":\"command\",\"command\":\"eval\",\"asset\":\"scene7874c633-fcfb-495e-b013-be382cfa7db3\",\"success\":\"correct_response\",\"failure\":\"wrong_response\"},{\"type\":\"command\",\"command\":\"HIDEHTMLELEMENTS\",\"asset\":\"scene7874c633-fcfb-495e-b013-be382cfa7db3\"}],\"type\":\"click\"},\"z-index\":1}],\"text\":[],\"shape\":[],\"hotspot\":[],\"embed\":[],\"div\":[],\"audio\":[{\"asset\":\"domain_10514\"}],\"scribble\":[],\"htext\":[],\"g\":[{\"x\":10,\"y\":0,\"w\":80,\"h\":90,\"visible\":true,\"editable\":true,\"embed\":{\"template\":\"item\",\"var-item\":\"item\"},\"z-index\":2},{\"x\":30,\"y\":-40,\"w\":40,\"h\":48,\"visible\":false,\"editable\":true,\"embed\":{\"template-name\":\"retry\"},\"id\":\"retryDialog\",\"z-index\":3},{\"x\":30,\"y\":-40,\"w\":40,\"h\":48,\"visible\":false,\"editable\":true,\"embed\":{\"template-name\":\"goodjob\"},\"id\":\"goodjobDialog\",\"z-index\":4},{\"x\":30,\"y\":-40,\"w\":40,\"h\":48,\"visible\":false,\"editable\":true,\"embed\":{\"template-name\":\"retry\"},\"id\":\"retryDialog\",\"z-index\":5},{\"x\":30,\"y\":-40,\"w\":40,\"h\":48,\"visible\":false,\"editable\":true,\"embed\":{\"template-name\":\"goodjob\"},\"id\":\"goodjobDialog\",\"z-index\":6}],\"iterate\":\"assessment_7874c633-fcfb-495e-b013-be382cfa7db3\",\"preload\":true,\"var\":\"item\",\"appEvents\":{\"list\":\"next_item,correct_response,wrong_response,next_item,correct_response,wrong_response,next_item,correct_response,wrong_response\"}},{\"id\":\"scenee9ba0aea-5717-4e5a-82bd-331ce4e6e4bc\",\"x\":0,\"y\":0,\"w\":100,\"h\":100,\"param\":[{\"name\":\"next\",\"value\":\"scened62be57e-5339-485d-85a5-ed06367575fc\"},{\"name\":\"previous\",\"value\":\"scene7874c633-fcfb-495e-b013-be382cfa7db3\"}],\"events\":{\"event\":[{\"action\":[{\"type\":\"command\",\"command\":\"play\",\"asset\":\"retry_audio\"},{\"type\":\"command\",\"command\":\"show\",\"asset\":\"retryDialog\"},{\"tween\":{\"to\":{\"ease\":\"bounceOut \",\"duration\":1500,\"__cdata\":{\"x\":20,\"y\":20,\"w\":40,\"h\":30}},\"id\":\"retryShowAnim\"},\"type\":\"animation\",\"asset\":\"retryDialog\"}],\"type\":\"wrong_response\"},{\"action\":[{\"type\":\"command\",\"command\":\"play\",\"asset\":\"goodjob_audio\"},{\"type\":\"command\",\"command\":\"show\",\"asset\":\"goodjobDialog\"},{\"tween\":{\"to\":{\"ease\":\"bounceOut\",\"duration\":1500,\"__cdata\":{\"x\":20,\"y\":20,\"w\":40,\"h\":30}},\"id\":\"gjShowAnim\"},\"type\":\"animation\",\"asset\":\"goodjobDialog\"}],\"type\":\"correct_response\"},{\"action\":[{\"type\":\"command\",\"command\":\"play\",\"asset\":\"retry_audio\"},{\"type\":\"command\",\"command\":\"show\",\"asset\":\"retryDialog\"},{\"tween\":{\"to\":{\"ease\":\"bounceOut \",\"duration\":1500,\"__cdata\":{\"x\":20,\"y\":20,\"w\":40,\"h\":30}},\"id\":\"retryShowAnim\"},\"type\":\"animation\",\"asset\":\"retryDialog\"}],\"type\":\"wrong_response\"},{\"action\":[{\"type\":\"command\",\"command\":\"play\",\"asset\":\"goodjob_audio\"},{\"type\":\"command\",\"command\":\"show\",\"asset\":\"goodjobDialog\"},{\"tween\":{\"to\":{\"ease\":\"bounceOut\",\"duration\":1500,\"__cdata\":{\"x\":20,\"y\":20,\"w\":40,\"h\":30}},\"id\":\"gjShowAnim\"},\"type\":\"animation\",\"asset\":\"goodjobDialog\"}],\"type\":\"correct_response\"},{\"action\":{\"type\":\"command\",\"command\":\"play\",\"asset\":\"domain_10514\",\"loop\":1},\"type\":\"enter\"},{\"action\":{\"type\":\"command\",\"command\":\"stop\",\"asset\":\"domain_10514\",\"loop\":1},\"type\":\"exit\"}]},\"image\":[{\"x\":91,\"y\":15,\"w\":0,\"h\":15,\"visible\":true,\"editable\":true,\"asset\":\"validate\",\"event\":{\"action\":[{\"type\":\"command\",\"command\":\"eval\",\"asset\":\"scenee9ba0aea-5717-4e5a-82bd-331ce4e6e4bc\",\"success\":\"correct_response\",\"failure\":\"wrong_response\"},{\"type\":\"command\",\"command\":\"HIDEHTMLELEMENTS\",\"asset\":\"scenee9ba0aea-5717-4e5a-82bd-331ce4e6e4bc\"}],\"type\":\"click\"},\"z-index\":0},{\"x\":91,\"y\":15,\"w\":0,\"h\":15,\"visible\":true,\"editable\":true,\"asset\":\"validate\",\"event\":{\"action\":[{\"type\":\"command\",\"command\":\"eval\",\"asset\":\"scenee9ba0aea-5717-4e5a-82bd-331ce4e6e4bc\",\"success\":\"correct_response\",\"failure\":\"wrong_response\"},{\"type\":\"command\",\"command\":\"HIDEHTMLELEMENTS\",\"asset\":\"scenee9ba0aea-5717-4e5a-82bd-331ce4e6e4bc\"}],\"type\":\"click\"},\"z-index\":1}],\"text\":[],\"shape\":[],\"hotspot\":[],\"embed\":[],\"div\":[],\"audio\":[{\"asset\":\"domain_10514\"}],\"scribble\":[],\"htext\":[],\"g\":[{\"x\":10,\"y\":0,\"w\":80,\"h\":90,\"visible\":true,\"editable\":true,\"embed\":{\"template\":\"item\",\"var-item\":\"item\"},\"z-index\":2},{\"x\":30,\"y\":-40,\"w\":40,\"h\":48,\"visible\":false,\"editable\":true,\"embed\":{\"template-name\":\"retry\"},\"id\":\"retryDialog\",\"z-index\":3},{\"x\":30,\"y\":-40,\"w\":40,\"h\":48,\"visible\":false,\"editable\":true,\"embed\":{\"template-name\":\"goodjob\"},\"id\":\"goodjobDialog\",\"z-index\":4},{\"x\":30,\"y\":-40,\"w\":40,\"h\":48,\"visible\":false,\"editable\":true,\"embed\":{\"template-name\":\"retry\"},\"id\":\"retryDialog\",\"z-index\":5},{\"x\":30,\"y\":-40,\"w\":40,\"h\":48,\"visible\":false,\"editable\":true,\"embed\":{\"template-name\":\"goodjob\"},\"id\":\"goodjobDialog\",\"z-index\":6}],\"iterate\":\"assessment_e9ba0aea-5717-4e5a-82bd-331ce4e6e4bc\",\"preload\":true,\"var\":\"item\",\"appEvents\":{\"list\":\"next_item,correct_response,wrong_response,next_item,correct_response,wrong_response,next_item,correct_response,wrong_response\"}},{\"id\":\"scened62be57e-5339-485d-85a5-ed06367575fc\",\"x\":0,\"y\":0,\"w\":100,\"h\":100,\"param\":[{\"name\":\"next\",\"value\":\"scenecf6ddd09-764f-4611-9ab5-82ae8a124ed7\"},{\"name\":\"previous\",\"value\":\"scenee9ba0aea-5717-4e5a-82bd-331ce4e6e4bc\"}],\"events\":{\"event\":[{\"action\":[{\"type\":\"command\",\"command\":\"play\",\"asset\":\"retry_audio\"},{\"type\":\"command\",\"command\":\"show\",\"asset\":\"retryDialog\"},{\"tween\":{\"to\":{\"ease\":\"bounceOut \",\"duration\":1500,\"__cdata\":{\"x\":20,\"y\":20,\"w\":40,\"h\":30}},\"id\":\"retryShowAnim\"},\"type\":\"animation\",\"asset\":\"retryDialog\"}],\"type\":\"wrong_response\"},{\"action\":[{\"type\":\"command\",\"command\":\"play\",\"asset\":\"goodjob_audio\"},{\"type\":\"command\",\"command\":\"show\",\"asset\":\"goodjobDialog\"},{\"tween\":{\"to\":{\"ease\":\"bounceOut\",\"duration\":1500,\"__cdata\":{\"x\":20,\"y\":20,\"w\":40,\"h\":30}},\"id\":\"gjShowAnim\"},\"type\":\"animation\",\"asset\":\"goodjobDialog\"}],\"type\":\"correct_response\"},{\"action\":[{\"type\":\"command\",\"command\":\"play\",\"asset\":\"retry_audio\"},{\"type\":\"command\",\"command\":\"show\",\"asset\":\"retryDialog\"},{\"tween\":{\"to\":{\"ease\":\"bounceOut \",\"duration\":1500,\"__cdata\":{\"x\":20,\"y\":20,\"w\":40,\"h\":30}},\"id\":\"retryShowAnim\"},\"type\":\"animation\",\"asset\":\"retryDialog\"}],\"type\":\"wrong_response\"},{\"action\":[{\"type\":\"command\",\"command\":\"play\",\"asset\":\"goodjob_audio\"},{\"type\":\"command\",\"command\":\"show\",\"asset\":\"goodjobDialog\"},{\"tween\":{\"to\":{\"ease\":\"bounceOut\",\"duration\":1500,\"__cdata\":{\"x\":20,\"y\":20,\"w\":40,\"h\":30}},\"id\":\"gjShowAnim\"},\"type\":\"animation\",\"asset\":\"goodjobDialog\"}],\"type\":\"correct_response\"},{\"action\":{\"type\":\"command\",\"command\":\"play\",\"asset\":\"domain_8204\",\"loop\":1},\"type\":\"enter\"},{\"action\":{\"type\":\"command\",\"command\":\"stop\",\"asset\":\"domain_8204\",\"loop\":1},\"type\":\"exit\"}]},\"image\":[{\"x\":91,\"y\":15,\"w\":0,\"h\":15,\"visible\":true,\"editable\":true,\"asset\":\"validate\",\"event\":{\"action\":[{\"type\":\"command\",\"command\":\"eval\",\"asset\":\"scened62be57e-5339-485d-85a5-ed06367575fc\",\"success\":\"correct_response\",\"failure\":\"wrong_response\"},{\"type\":\"command\",\"command\":\"HIDEHTMLELEMENTS\",\"asset\":\"scened62be57e-5339-485d-85a5-ed06367575fc\"}],\"type\":\"click\"},\"z-index\":0},{\"x\":91,\"y\":15,\"w\":0,\"h\":15,\"visible\":true,\"editable\":true,\"asset\":\"validate\",\"event\":{\"action\":[{\"type\":\"command\",\"command\":\"eval\",\"asset\":\"scened62be57e-5339-485d-85a5-ed06367575fc\",\"success\":\"correct_response\",\"failure\":\"wrong_response\"},{\"type\":\"command\",\"command\":\"HIDEHTMLELEMENTS\",\"asset\":\"scened62be57e-5339-485d-85a5-ed06367575fc\"}],\"type\":\"click\"},\"z-index\":1}],\"text\":[],\"shape\":[],\"hotspot\":[],\"embed\":[],\"div\":[],\"audio\":[{\"asset\":\"domain_8204\"}],\"scribble\":[],\"htext\":[],\"g\":[{\"x\":10,\"y\":0,\"w\":80,\"h\":90,\"visible\":true,\"editable\":true,\"embed\":{\"template\":\"item\",\"var-item\":\"item\"},\"z-index\":2},{\"x\":30,\"y\":-40,\"w\":40,\"h\":48,\"visible\":false,\"editable\":true,\"embed\":{\"template-name\":\"retry\"},\"id\":\"retryDialog\",\"z-index\":3},{\"x\":30,\"y\":-40,\"w\":40,\"h\":48,\"visible\":false,\"editable\":true,\"embed\":{\"template-name\":\"goodjob\"},\"id\":\"goodjobDialog\",\"z-index\":4},{\"x\":30,\"y\":-40,\"w\":40,\"h\":48,\"visible\":false,\"editable\":true,\"embed\":{\"template-name\":\"retry\"},\"id\":\"retryDialog\",\"z-index\":5},{\"x\":30,\"y\":-40,\"w\":40,\"h\":48,\"visible\":false,\"editable\":true,\"embed\":{\"template-name\":\"goodjob\"},\"id\":\"goodjobDialog\",\"z-index\":6}],\"iterate\":\"assessment_d62be57e-5339-485d-85a5-ed06367575fc\",\"preload\":true,\"var\":\"item\",\"appEvents\":{\"list\":\"next_item,correct_response,wrong_response,next_item,correct_response,wrong_response,next_item,correct_response,wrong_response\"}},{\"id\":\"scenecf6ddd09-764f-4611-9ab5-82ae8a124ed7\",\"x\":0,\"y\":0,\"w\":100,\"h\":100,\"param\":[{\"name\":\"next\",\"value\":\"scene4fc1b50e-2577-49dc-bba0-aef91a16c6a9\"},{\"name\":\"previous\",\"value\":\"scened62be57e-5339-485d-85a5-ed06367575fc\"}],\"events\":{\"event\":[{\"action\":[{\"type\":\"command\",\"command\":\"play\",\"asset\":\"retry_audio\"},{\"type\":\"command\",\"command\":\"show\",\"asset\":\"retryDialog\"},{\"tween\":{\"to\":{\"ease\":\"bounceOut \",\"duration\":1500,\"__cdata\":{\"x\":20,\"y\":20,\"w\":40,\"h\":30}},\"id\":\"retryShowAnim\"},\"type\":\"animation\",\"asset\":\"retryDialog\"}],\"type\":\"wrong_response\"},{\"action\":[{\"type\":\"command\",\"command\":\"play\",\"asset\":\"goodjob_audio\"},{\"type\":\"command\",\"command\":\"show\",\"asset\":\"goodjobDialog\"},{\"tween\":{\"to\":{\"ease\":\"bounceOut\",\"duration\":1500,\"__cdata\":{\"x\":20,\"y\":20,\"w\":40,\"h\":30}},\"id\":\"gjShowAnim\"},\"type\":\"animation\",\"asset\":\"goodjobDialog\"}],\"type\":\"correct_response\"},{\"action\":[{\"type\":\"command\",\"command\":\"play\",\"asset\":\"retry_audio\"},{\"type\":\"command\",\"command\":\"show\",\"asset\":\"retryDialog\"},{\"tween\":{\"to\":{\"ease\":\"bounceOut \",\"duration\":1500,\"__cdata\":{\"x\":20,\"y\":20,\"w\":40,\"h\":30}},\"id\":\"retryShowAnim\"},\"type\":\"animation\",\"asset\":\"retryDialog\"}],\"type\":\"wrong_response\"},{\"action\":[{\"type\":\"command\",\"command\":\"play\",\"asset\":\"goodjob_audio\"},{\"type\":\"command\",\"command\":\"show\",\"asset\":\"goodjobDialog\"},{\"tween\":{\"to\":{\"ease\":\"bounceOut\",\"duration\":1500,\"__cdata\":{\"x\":20,\"y\":20,\"w\":40,\"h\":30}},\"id\":\"gjShowAnim\"},\"type\":\"animation\",\"asset\":\"goodjobDialog\"}],\"type\":\"correct_response\"},{\"action\":{\"type\":\"command\",\"command\":\"play\",\"asset\":\"domain_8210\",\"loop\":1},\"type\":\"enter\"},{\"action\":{\"type\":\"command\",\"command\":\"stop\",\"asset\":\"domain_8210\",\"loop\":1},\"type\":\"exit\"}]},\"image\":[{\"x\":91,\"y\":15,\"w\":0,\"h\":15,\"visible\":true,\"editable\":true,\"asset\":\"validate\",\"event\":{\"action\":[{\"type\":\"command\",\"command\":\"eval\",\"asset\":\"scenecf6ddd09-764f-4611-9ab5-82ae8a124ed7\",\"success\":\"correct_response\",\"failure\":\"wrong_response\"},{\"type\":\"command\",\"command\":\"HIDEHTMLELEMENTS\",\"asset\":\"scenecf6ddd09-764f-4611-9ab5-82ae8a124ed7\"}],\"type\":\"click\"},\"z-index\":0},{\"x\":91,\"y\":15,\"w\":0,\"h\":15,\"visible\":true,\"editable\":true,\"asset\":\"validate\",\"event\":{\"action\":[{\"type\":\"command\",\"command\":\"eval\",\"asset\":\"scenecf6ddd09-764f-4611-9ab5-82ae8a124ed7\",\"success\":\"correct_response\",\"failure\":\"wrong_response\"},{\"type\":\"command\",\"command\":\"HIDEHTMLELEMENTS\",\"asset\":\"scenecf6ddd09-764f-4611-9ab5-82ae8a124ed7\"}],\"type\":\"click\"},\"z-index\":1}],\"text\":[],\"shape\":[],\"hotspot\":[],\"embed\":[],\"div\":[],\"audio\":[{\"asset\":\"domain_8210\"}],\"scribble\":[],\"htext\":[],\"g\":[{\"x\":10,\"y\":0,\"w\":80,\"h\":90,\"visible\":true,\"editable\":true,\"embed\":{\"template\":\"item\",\"var-item\":\"item\"},\"z-index\":2},{\"x\":30,\"y\":-40,\"w\":40,\"h\":48,\"visible\":false,\"editable\":true,\"embed\":{\"template-name\":\"retry\"},\"id\":\"retryDialog\",\"z-index\":3},{\"x\":30,\"y\":-40,\"w\":40,\"h\":48,\"visible\":false,\"editable\":true,\"embed\":{\"template-name\":\"goodjob\"},\"id\":\"goodjobDialog\",\"z-index\":4},{\"x\":30,\"y\":-40,\"w\":40,\"h\":48,\"visible\":false,\"editable\":true,\"embed\":{\"template-name\":\"retry\"},\"id\":\"retryDialog\",\"z-index\":5},{\"x\":30,\"y\":-40,\"w\":40,\"h\":48,\"visible\":false,\"editable\":true,\"embed\":{\"template-name\":\"goodjob\"},\"id\":\"goodjobDialog\",\"z-index\":6}],\"iterate\":\"assessment_cf6ddd09-764f-4611-9ab5-82ae8a124ed7\",\"preload\":true,\"var\":\"item\",\"appEvents\":{\"list\":\"next_item,correct_response,wrong_response,next_item,correct_response,wrong_response,next_item,correct_response,wrong_response\"}},{\"id\":\"scene4fc1b50e-2577-49dc-bba0-aef91a16c6a9\",\"x\":0,\"y\":0,\"w\":100,\"h\":100,\"param\":[{\"name\":\"next\",\"value\":\"endScreen\"},{\"name\":\"previous\",\"value\":\"scenecf6ddd09-764f-4611-9ab5-82ae8a124ed7\"}],\"events\":{\"event\":[{\"action\":[{\"type\":\"command\",\"command\":\"play\",\"asset\":\"retry_audio\"},{\"type\":\"command\",\"command\":\"show\",\"asset\":\"retryDialog\"},{\"tween\":{\"to\":{\"ease\":\"bounceOut \",\"duration\":1500,\"__cdata\":{\"x\":20,\"y\":20,\"w\":40,\"h\":30}},\"id\":\"retryShowAnim\"},\"type\":\"animation\",\"asset\":\"retryDialog\"}],\"type\":\"wrong_response\"},{\"action\":[{\"type\":\"command\",\"command\":\"play\",\"asset\":\"goodjob_audio\"},{\"type\":\"command\",\"command\":\"show\",\"asset\":\"goodjobDialog\"},{\"tween\":{\"to\":{\"ease\":\"bounceOut\",\"duration\":1500,\"__cdata\":{\"x\":20,\"y\":20,\"w\":40,\"h\":30}},\"id\":\"gjShowAnim\"},\"type\":\"animation\",\"asset\":\"goodjobDialog\"}],\"type\":\"correct_response\"},{\"action\":[{\"type\":\"command\",\"command\":\"play\",\"asset\":\"retry_audio\"},{\"type\":\"command\",\"command\":\"show\",\"asset\":\"retryDialog\"},{\"tween\":{\"to\":{\"ease\":\"bounceOut \",\"duration\":1500,\"__cdata\":{\"x\":20,\"y\":20,\"w\":40,\"h\":30}},\"id\":\"retryShowAnim\"},\"type\":\"animation\",\"asset\":\"retryDialog\"}],\"type\":\"wrong_response\"},{\"action\":[{\"type\":\"command\",\"command\":\"play\",\"asset\":\"goodjob_audio\"},{\"type\":\"command\",\"command\":\"show\",\"asset\":\"goodjobDialog\"},{\"tween\":{\"to\":{\"ease\":\"bounceOut\",\"duration\":1500,\"__cdata\":{\"x\":20,\"y\":20,\"w\":40,\"h\":30}},\"id\":\"gjShowAnim\"},\"type\":\"animation\",\"asset\":\"goodjobDialog\"}],\"type\":\"correct_response\"},{\"action\":{\"type\":\"command\",\"command\":\"play\",\"asset\":\"do_30019709\",\"loop\":1},\"type\":\"enter\"},{\"action\":{\"type\":\"command\",\"command\":\"stop\",\"asset\":\"do_30019709\",\"loop\":1},\"type\":\"exit\"}]},\"image\":[{\"x\":91,\"y\":15,\"w\":0,\"h\":15,\"visible\":true,\"editable\":true,\"asset\":\"validate\",\"event\":{\"action\":[{\"type\":\"command\",\"command\":\"eval\",\"asset\":\"scene4fc1b50e-2577-49dc-bba0-aef91a16c6a9\",\"success\":\"correct_response\",\"failure\":\"wrong_response\"},{\"type\":\"command\",\"command\":\"HIDEHTMLELEMENTS\",\"asset\":\"scene4fc1b50e-2577-49dc-bba0-aef91a16c6a9\"}],\"type\":\"click\"},\"z-index\":0},{\"x\":91,\"y\":15,\"w\":0,\"h\":15,\"visible\":true,\"editable\":true,\"asset\":\"validate\",\"event\":{\"action\":[{\"type\":\"command\",\"command\":\"eval\",\"asset\":\"scene4fc1b50e-2577-49dc-bba0-aef91a16c6a9\",\"success\":\"correct_response\",\"failure\":\"wrong_response\"},{\"type\":\"command\",\"command\":\"HIDEHTMLELEMENTS\",\"asset\":\"scene4fc1b50e-2577-49dc-bba0-aef91a16c6a9\"}],\"type\":\"click\"},\"z-index\":1}],\"text\":[],\"shape\":[],\"hotspot\":[],\"embed\":[],\"div\":[],\"audio\":[{\"asset\":\"do_30019709\"}],\"scribble\":[],\"htext\":[],\"g\":[{\"x\":10,\"y\":0,\"w\":80,\"h\":90,\"visible\":true,\"editable\":true,\"embed\":{\"template\":\"item\",\"var-item\":\"item\"},\"z-index\":2},{\"x\":30,\"y\":-40,\"w\":40,\"h\":48,\"visible\":false,\"editable\":true,\"embed\":{\"template-name\":\"retry\"},\"id\":\"retryDialog\",\"z-index\":3},{\"x\":30,\"y\":-40,\"w\":40,\"h\":48,\"visible\":false,\"editable\":true,\"embed\":{\"template-name\":\"goodjob\"},\"id\":\"goodjobDialog\",\"z-index\":4},{\"x\":30,\"y\":-40,\"w\":40,\"h\":48,\"visible\":false,\"editable\":true,\"embed\":{\"template-name\":\"retry\"},\"id\":\"retryDialog\",\"z-index\":5},{\"x\":30,\"y\":-40,\"w\":40,\"h\":48,\"visible\":false,\"editable\":true,\"embed\":{\"template-name\":\"goodjob\"},\"id\":\"goodjobDialog\",\"z-index\":6}],\"iterate\":\"assessment_4fc1b50e-2577-49dc-bba0-aef91a16c6a9\",\"preload\":true,\"var\":\"item\",\"appEvents\":{\"list\":\"next_item,correct_response,wrong_response,next_item,correct_response,wrong_response,next_item,correct_response,wrong_response\"}},{\"id\":\"endScreen\",\"x\":0,\"y\":0,\"w\":100,\"h\":100,\"param\":[{\"name\":\"previousScreen\",\"value\":\"recordAudio9\"},{\"name\":\"nextScreen\",\"value\":\"splash\"},{\"name\":\"previous\",\"value\":\"scene4fc1b50e-2577-49dc-bba0-aef91a16c6a9\"}],\"events\":{\"event\":[]},\"image\":[{\"x\":0,\"y\":0,\"w\":100,\"h\":100,\"visible\":true,\"editable\":true,\"asset\":\"endScreen\",\"z-index\":0},{\"x\":40,\"y\":50,\"w\":8,\"h\":13,\"visible\":true,\"editable\":true,\"asset\":\"previous\",\"event\":{\"action\":{\"asset\":\"theme\",\"command\":\"transitionTo\",\"direction\":\"right\",\"duration\":600,\"ease\":\"linear\",\"effect\":\"scroll\",\"param\":\"previousScreen\",\"type\":\"command\"},\"type\":\"click\"},\"z-index\":1},{\"x\":50,\"y\":50,\"w\":8,\"h\":13,\"visible\":true,\"editable\":true,\"asset\":\"next\",\"event\":{\"action\":{\"asset\":\"theme\",\"command\":\"transitionTo\",\"direction\":\"right\",\"duration\":600,\"ease\":\"linear\",\"effect\":\"scroll\",\"param\":\"nextScreen\",\"type\":\"command\"},\"type\":\"click\"},\"z-index\":2}],\"text\":[],\"shape\":[],\"hotspot\":[],\"embed\":[],\"div\":[],\"audio\":[],\"scribble\":[],\"htext\":[],\"g\":[]}]}}",
        "primaryCategory": "Learning Resource",
        "artifactUrl": "https://ekstep-public-prod.s3-ap-south-1.amazonaws.com/content/1473940561370_domain_4083.zip",
        "contentType": "Resource",
        "identifier": "domain_4083",
        "mediaType": "content",
        "streamingUrl": "https://ekstep-public-prod.s3-ap-south-1.amazonaws.com/content/ecml/domain_4083-latest",
    },
    "data": "{\"theme\":{\"manifest\":{\"media\":[{\"id\":\"domain_4088\",\"type\":\"image\",\"src\":\"https://community.ekstep.in/assets/public/content/Story5_1463740982012.png\",\"assetId\":\"domain_4088\"},{\"id\":\"mic\",\"type\":\"image\",\"src\":\"https://community.ekstep.in/assets/public/content/1463730546614mic.png\",\"assetId\":\"mic\"},{\"id\":\"blacktint\",\"type\":\"image\",\"src\":\"https://community.ekstep.in/assets/public/content/14659048074781463388910130blacktint.png\"},{\"id\":\"record\",\"type\":\"image\",\"src\":\"https://community.ekstep.in/assets/public/content/14659048081011463388910720record.png\"},{\"id\":\"stop_record\",\"type\":\"image\",\"src\":\"https://community.ekstep.in/assets/public/content/14659048079251463388910583stop.png\"},{\"id\":\"icon_sound\",\"type\":\"image\",\"src\":\"https://community.ekstep.in/assets/public/content/14659048086161463388911157icon_sound.png\"},{\"id\":\"domain_4111\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p1_1463741645976.mp3\",\"assetId\":\"domain_4111\"},{\"id\":\"domain_7490\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/title1_1465575036765.mp3\",\"assetId\":\"domain_7490\"},{\"id\":\"domain_7491\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p1ko2_1465575092986.mp3\",\"assetId\":\"domain_7491\"},{\"id\":\"domain_7492\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p1ake3_1465575140132.mp3\",\"assetId\":\"domain_7492\"},{\"id\":\"domain_7493\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/title3_1465575373768.mp3\",\"assetId\":\"domain_7493\"},{\"id\":\"domain_7494\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p1mile4_1465575427954.mp3\",\"assetId\":\"domain_7494\"},{\"id\":\"domain_7495\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/title3_1465575468608.mp3\",\"assetId\":\"domain_7495\"},{\"id\":\"domain_7496\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p1lakhar5_1465575524236.mp3\",\"assetId\":\"domain_7496\"},{\"id\":\"domain_7497\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p1vah6_1465575568067.mp3\",\"assetId\":\"domain_7497\"},{\"id\":\"domain_7498\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p1thalab7_1465575614677.mp3\",\"assetId\":\"domain_7498\"},{\"id\":\"domain_7499\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p1kay8_1465575662244.mp3\",\"assetId\":\"domain_7499\"},{\"id\":\"domain_7500\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p1kinaraye9_1465575703172.mp3\",\"assetId\":\"domain_7500\"},{\"id\":\"domain_7501\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p1ghaya10_1465575753467.mp3\",\"assetId\":\"domain_7501\"},{\"id\":\"domain_4109\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p2_1463741595201.mp3\",\"assetId\":\"domain_4109\"},{\"id\":\"domain_7502\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p2pani1_1465575829877.mp3\",\"assetId\":\"domain_7502\"},{\"id\":\"domain_7503\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p2may2_1465575850900.mp3\",\"assetId\":\"domain_7503\"},{\"id\":\"domain_7504\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p2yousay3_1465575900251.mp3\",\"assetId\":\"domain_7504\"},{\"id\":\"domain_7505\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p2apane4_1465575957086.mp3\",\"assetId\":\"domain_7505\"},{\"id\":\"domain_7506\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p2parchaye_1465576381958.mp3\",\"assetId\":\"domain_7506\"},{\"id\":\"domain_7507\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p2dheke6_1465576441822.mp3\",\"assetId\":\"domain_7507\"},{\"id\":\"domain_7508\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p2yousaye7_1465576488471.mp3\",\"assetId\":\"domain_7508\"},{\"id\":\"domain_7509\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p2lagha8_1465576531305.mp3\",\"assetId\":\"domain_7509\"},{\"id\":\"domain_7510\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p2dusaraye9_1465576658703.mp3\",\"assetId\":\"domain_7510\"},{\"id\":\"domain_7511\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/title1_1465576758380.mp3\",\"assetId\":\"domain_7511\"},{\"id\":\"domain_7512\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p2kaye11_1465576825294.mp3\",\"assetId\":\"domain_7512\"},{\"id\":\"domain_7513\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p2pass12_1465576869340.mp3\",\"assetId\":\"domain_7513\"},{\"id\":\"domain_7514\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p2bhee14_1465576915923.mp3\",\"assetId\":\"domain_7514\"},{\"id\":\"domain_7515\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p1ake3_1465576980799.mp3\",\"assetId\":\"domain_7515\"},{\"id\":\"domain_7516\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/title3_1465577025982.mp3\",\"assetId\":\"domain_7516\"},{\"id\":\"domain_10530\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/hai_1465966841071.mp3\",\"assetId\":\"domain_10530\"},{\"id\":\"domain_4107\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p3_1463741570367.mp3\",\"assetId\":\"domain_4107\"},{\"id\":\"domain_7517\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p3vah1_1465577189021.mp3\",\"assetId\":\"domain_7517\"},{\"id\":\"domain_7518\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/title3_1465577242487.mp3\",\"assetId\":\"domain_7518\"},{\"id\":\"domain_7519\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p3chenaye2_1465577289951.mp3\",\"assetId\":\"domain_7519\"},{\"id\":\"domain_7520\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p3kha3_1465577335385.mp3\",\"assetId\":\"domain_7520\"},{\"id\":\"domain_7521\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p3tharika4_1465577389028.mp3\",\"assetId\":\"domain_7521\"},{\"id\":\"domain_7522\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p3souchnaye5_1465577430394.mp3\",\"assetId\":\"domain_7522\"},{\"id\":\"domain_7523\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p3lllagha6_1465577520945.mp3\",\"assetId\":\"domain_7523\"},{\"id\":\"domain_7526\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p3yousnaye7_1465577612814.mp3\",\"assetId\":\"domain_7526\"},{\"id\":\"domain_7530\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p3bounkaney8_1465578304919.mp3\",\"assetId\":\"domain_7530\"},{\"id\":\"domain_7531\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p3kaye9_1465578365051.mp3\",\"assetId\":\"domain_7531\"},{\"id\":\"domain_7533\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p3leaye10_1465578414344.mp3\",\"assetId\":\"domain_7533\"},{\"id\":\"domain_7537\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p3mohe11_1465578496083.mp3\",\"assetId\":\"domain_7537\"},{\"id\":\"domain_7545\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p3khola12_1465578554059.mp3\",\"assetId\":\"domain_7545\"},{\"id\":\"domain_4106\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p4_1463741533473.mp3\",\"assetId\":\"domain_4106\"},{\"id\":\"domain_7546\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p4mohe1_1465578622615.mp3\",\"assetId\":\"domain_7546\"},{\"id\":\"domain_7547\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p4kolthaye2_1465578663655.mp3\",\"assetId\":\"domain_7547\"},{\"id\":\"domain_7548\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p4he3_1465578708541.mp3\",\"assetId\":\"domain_7548\"},{\"id\":\"domain_7549\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/title3_1465578821120.mp3\",\"assetId\":\"domain_7549\"},{\"id\":\"domain_7556\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p4thalab4_1465578875145.mp3\",\"assetId\":\"domain_7556\"},{\"id\":\"domain_7557\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p4maye5_1465578970734.mp3\",\"assetId\":\"domain_7557\"},{\"id\":\"domain_7558\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p4ghir6_1465579018390.mp3\",\"assetId\":\"domain_7558\"},{\"id\":\"domain_7559\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/p4gheye7_1465579070012.mp3\",\"assetId\":\"domain_7559\"},{\"id\":\"domain_10639\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/kathin_shabd_1465972359762.mp3\",\"assetId\":\"domain_10639\"},{\"id\":\"domain_10642\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/kutte_1465972508666.mp3\",\"assetId\":\"domain_10642\"},{\"id\":\"domain_10644\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/bhonkne_1465972575039.mp3\",\"assetId\":\"domain_10644\"},{\"id\":\"domain_10650\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/chhennne_1465972662659.mp3\",\"assetId\":\"domain_10650\"},{\"id\":\"domain_10651\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/in_shabdon_ko_chunein_1465972708813.mp3\",\"assetId\":\"domain_10651\"},{\"id\":\"do_30032054\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/aaadegaa34a_1467606593965.mp3\",\"assetId\":\"do_30032054\"},{\"id\":\"do_30032055\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/aadegayaa34_1467606616562.mp3\",\"assetId\":\"do_30032055\"},{\"id\":\"domain_4228\",\"type\":\"image\",\"src\":\"https://community.ekstep.in/assets/public/content/question_1463829748432.jpg\",\"assetId\":\"domain_4228\"},{\"id\":\"do_30082853\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/questionone_347_1472721794_1472721802085.mp3\",\"assetId\":\"do_30082853\"},{\"id\":\"do_30082859\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/questiontwo_347_1472721894_1472721902487.mp3\",\"assetId\":\"do_30082859\"},{\"id\":\"do_30082862\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/questionthree_347_1472721982_1472721990066.mp3\",\"assetId\":\"do_30082862\"},{\"id\":\"do_30082865\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/questionfour_347_1472722064_1472722071966.mp3\",\"assetId\":\"do_30082865\"},{\"id\":\"do_30082871\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/questionfive_347_1472722180_1472722187784.mp3\",\"assetId\":\"do_30082871\"},{\"id\":\"do_30082873\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/questionsixoption_347_1472722277_1472722285501.mp3\",\"assetId\":\"do_30082873\"},{\"id\":\"validate\",\"src\":\"https://community.ekstep.in/assets/public/content/btn_ok_highlights_1460705843676.png\",\"type\":\"image\",\"assetId\":\"domain_38852\"},{\"id\":\"domain_10514\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/chitra_ko_pehchaano_1465965529177.mp3\",\"assetId\":\"domain_10514\"},{\"id\":\"domain_8204\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/question_323_1465817761_1465817761070.mp3\",\"assetId\":\"domain_8204\"},{\"id\":\"domain_8210\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/question_323_1465817873_1465817873949.mp3\",\"assetId\":\"domain_8210\"},{\"id\":\"do_30019709\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/question3_141_1466944214_1466944214080.mp3\",\"assetId\":\"do_30019709\"},{\"id\":\"endScreen\",\"type\":\"image\",\"src\":\"https://community.ekstep.in/assets/public/content/1463730546861endScreen.png\",\"assetId\":\"endScreen\"},{\"id\":\"previous\",\"src\":\"https://community.ekstep.in/assets/public/content/btn_back_1461401700215.png\",\"type\":\"image\",\"assetId\":\"domain_40359\"},{\"id\":\"next\",\"src\":\"https://community.ekstep.in/assets/public/content/btn_next_1461401649059.png\",\"type\":\"image\",\"assetId\":\"domain_40358\"},{\"id\":\"domain_8205\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/a1_323_1465817797_1465817797448.mp3\",\"assetId\":\"domain_8205\"},{\"id\":\"domain_8206\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/a2_323_1465817810_1465817810836.mp3\",\"assetId\":\"domain_8206\"},{\"id\":\"domain_8207\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/a3_323_1465817824_1465817824542.mp3\",\"assetId\":\"domain_8207\"},{\"id\":\"domain_8208\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/a4_323_1465817835_1465817835892.mp3\",\"assetId\":\"domain_8208\"},{\"id\":\"domain_10624\",\"type\":\"image\",\"src\":\"https://community.ekstep.in/assets/public/content/roti_323_1465971255_1465971255545.jpg\",\"assetId\":\"domain_10624\"},{\"id\":\"domain_10561\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/story11q4a1_141_1465970351_1465970351272.mp3\",\"assetId\":\"domain_10561\"},{\"id\":\"domain_4543\",\"type\":\"image\",\"src\":\"https://community.ekstep.in/assets/public/content/photo5.2_323_1463999052_1463999053239.jpg\",\"assetId\":\"domain_4543\"},{\"id\":\"domain_8203\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/a1_323_1465817608_1465817608222.mp3\",\"assetId\":\"domain_8203\"},{\"id\":\"do_30019710\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/option1_141_1466944270_1466944270836.mp3\",\"assetId\":\"do_30019710\"},{\"id\":\"do_30019711\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/option2_141_1466944303_1466944303999.mp3\",\"assetId\":\"do_30019711\"},{\"id\":\"do_30019712\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/option3_141_1466944325_1466944325637.mp3\",\"assetId\":\"do_30019712\"},{\"id\":\"do_30019713\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/option4_141_1466944348_1466944348151.mp3\",\"assetId\":\"do_30019713\"},{\"id\":\"domain_8211\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/a1_323_1465817904_1465817904087.mp3\",\"assetId\":\"domain_8211\"},{\"id\":\"domain_8212\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/a2_323_1465817917_1465817917890.mp3\",\"assetId\":\"domain_8212\"},{\"id\":\"domain_8213\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/a3_323_1465817932_1465817932973.mp3\",\"assetId\":\"domain_8213\"},{\"id\":\"domain_8214\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/a4_323_1465817942_1465817942044.mp3\",\"assetId\":\"domain_8214\"},{\"id\":\"popupTint\",\"src\":\"https://community.ekstep.in/assets/public/content/PopupTint_1460636175572.png\",\"type\":\"image\",\"assetId\":\"domain_38606\"},{\"id\":\"retryBg\",\"src\":\"https://community.ekstep.in/assets/public/content/retryBg_1460727370746.png\",\"type\":\"image\",\"assetId\":\"domain_38938\"},{\"id\":\"goodjobBg\",\"src\":\"https://community.ekstep.in/assets/public/content/goodjobBg_1460727428389.png\",\"type\":\"image\",\"assetId\":\"domain_38939\"},{\"assetId\":\"do_30013065_keyboard_v2\",\"id\":\"keyboard_v2\",\"src\":\"https://community.ekstep.in/assets/public/content/1466499473814customkeyboard.js\",\"type\":\"plugin\"},{\"assetId\":\"domain_4171_keyboard_css\",\"id\":\"keyboard_css\",\"src\":\"https://community.ekstep.in/assets/public/content/1463746543887keyboard.css\",\"type\":\"css\"},{\"assetId\":\"do_30013065_keyboard_css_v2\",\"id\":\"keyboard_css_v2\",\"src\":\"https://community.ekstep.in/assets/public/content/1466499473632keyboard.css\",\"type\":\"css\"}]},\"id\":\"theme\",\"startStage\":\"recordAudio6\",\"ver\":0.2,\"controller\":[{\"name\":\"assessment_d62be57e-5339-485d-85a5-ed06367575fc\",\"type\":\"items\",\"id\":\"assessment_d62be57e-5339-485d-85a5-ed06367575fc\",\"__cdata\":{\"total_items\":1,\"subject\":\"domain\",\"code\":\"ItemSet_37288626-f4dc-424f-87dc-f1896910a30b\",\"type\":\"materialised\",\"lastUpdatedOn\":\"2016-06-13T11:41:51.061+0000\",\"showImmediateFeedback\":true,\"SET_TYPE\":\"MATERIALISED_SET\",\"createdOn\":\"2016-06-13T11:41:51.054+0000\",\"title\":\"Assessment Title\",\"items\":{\"domain_8220\":[{\"template\":\"org.ekstep.mcq.ta\",\"question_audio\":\"domain_8204\",\"subject\":\"domain\",\"template_id\":\"domain_3491\",\"code\":\"org.ekstep.assessmentitem.domain_4562\",\"lastUpdatedOn\":\"2016-06-13T11:37:20.763+0000\",\"type\":\"mcq\",\"concepts\":[{\"identifier\":\"LO10\",\"name\":\"Comprehension of brief passage 2\",\"objectType\":\"Concept\",\"relation\":\"associatedTo\",\"description\":null,\"index\":null}],\"createdOn\":\"2016-05-23T10:36:47.585+0000\",\"feedback\":\"\",\"qlevel\":\"EASY\",\"title\":\"Story5Q3\",\"name\":\"Story5Q3\",\"lastUpdatedBy\":\"323\",\"owner\":\"323\",\"used_for\":\"worksheet\",\"domain\":\"literacy\",\"max_score\":1,\"gradeLevel\":[\"Other\"],\"question\":\"कुत्ता रोटी लेकर कहाँ गया?\",\"language\":[\"Hindi\"],\"identifier\":\"domain_4562\",\"media\":[{\"id\":\"blacktint\",\"type\":\"image\",\"src\":\"https://community.ekstep.in/assets/public/content/14659048074781463388910130blacktint.png\",\"preload\":true},{\"id\":\"record\",\"type\":\"image\",\"src\":\"https://community.ekstep.in/assets/public/content/14659048081011463388910720record.png\",\"preload\":true},{\"id\":\"stop_record\",\"type\":\"image\",\"src\":\"https://community.ekstep.in/assets/public/content/14659048079251463388910583stop.png\",\"preload\":true},{\"id\":\"icon_sound\",\"type\":\"image\",\"src\":\"https://community.ekstep.in/assets/public/content/14659048086161463388911157icon_sound.png\",\"preload\":true},{\"id\":\"domain_8204\",\"type\":\"audio\",\"src\":\"https://ekstep-public-prod.s3-ap-south-1.amazonaws.com/content/question_323_1465817761_1465817761070.mp3\",\"asset_id\":\"domain_8204\",\"preload\":true},{\"id\":\"domain_8205\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/a1_323_1465817797_1465817797448.mp3\",\"assetId\":\"domain_8205\"},{\"id\":\"domain_8206\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/a2_323_1465817810_1465817810836.mp3\",\"assetId\":\"domain_8206\"},{\"id\":\"domain_8207\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/a3_323_1465817824_1465817824542.mp3\",\"assetId\":\"domain_8207\"},{\"id\":\"domain_8208\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/a4_323_1465817835_1465817835892.mp3\",\"assetId\":\"domain_8208\"}],\"options\":[{\"marks\":\"0\",\"value\":{\"type\":\"mixed\",\"text\":\"घर\",\"count\":\"\",\"image\":null,\"audio\":\"domain_8205\",\"fontsize\":150}},{\"marks\":\"1\",\"value\":{\"type\":\"mixed\",\"text\":\"तालाब के किनारे\",\"count\":\"\",\"image\":null,\"audio\":\"domain_8206\",\"fontsize\":150},\"score\":1,\"answer\":true},{\"marks\":\"0\",\"value\":{\"type\":\"mixed\",\"text\":\"जंगल\",\"count\":\"\",\"image\":null,\"audio\":\"domain_8207\",\"fontsize\":150}},{\"marks\":\"0\",\"value\":{\"type\":\"mixed\",\"text\":\"शहर\",\"count\":\"\",\"image\":null,\"audio\":\"domain_8208\",\"fontsize\":150}}]}]},\"SET_OBJECT_TYPE_KEY\":\"AssessmentItem\",\"shuffle\":false,\"lastUpdatedBy\":\"323\",\"owner\":\"Ilimi\",\"used_for\":\"assessment\",\"max_score\":1,\"gradeLevel\":[\"Grade 1\"],\"item_sets\":[{\"id\":\"domain_8220\",\"count\":1}],\"language\":[\"English\"],\"identifier\":\"domain_8220\"}},{\"name\":\"assessment_7874c633-fcfb-495e-b013-be382cfa7db3\",\"type\":\"items\",\"id\":\"assessment_7874c633-fcfb-495e-b013-be382cfa7db3\",\"__cdata\":{\"total_items\":1,\"subject\":\"domain\",\"code\":\"ItemSet_b2d7396c-8ec2-4527-9cdb-71d01227602d\",\"type\":\"materialised\",\"lastUpdatedOn\":\"2016-06-23T07:03:04.217+0000\",\"showImmediateFeedback\":true,\"SET_TYPE\":\"MATERIALISED_SET\",\"createdOn\":\"2016-06-23T07:03:04.207+0000\",\"title\":\"Assessment Title\",\"items\":{\"do_30016593\":[{\"model\":{\"keys\":\"र,रा,रि,री,रु,रू,रे,रै,रो,रौ,रं,रः,ट,टा,टि,टी,टु,टू,टे,टै,टो,टौ,टं,टः\"},\"question_audio\":\"domain_10561\",\"subject\":\"domain\",\"template_id\":\"do_30013065\",\"type\":\"ftb\",\"feedback\":\"\",\"qlevel\":\"EASY\",\"title\":\"Story5Q1\",\"question_image\":\"domain_10624\",\"name\":\"Story5Q1\",\"domain\":\"literacy\",\"max_score\":1,\"question\":\"\",\"template\":\"org.ekstep.ftb.barakhadinew\",\"answer\":{\"ans1\":{\"value\":\"रोटी\",\"score\":1}},\"code\":\"org.ekstep.assessmentitem.domain_4533\",\"lastUpdatedOn\":\"2016-06-23T07:01:34.947+0000\",\"concepts\":[{\"identifier\":\"LO1\",\"name\":\"Word Meaning\",\"objectType\":\"Concept\",\"relation\":\"associatedTo\",\"description\":null,\"index\":null}],\"createdOn\":\"2016-05-23T10:09:03.976+0000\",\"lastUpdatedBy\":\"323\",\"used_for\":\"worksheet\",\"owner\":\"323\",\"gradeLevel\":[\"Other\"],\"language\":[\"Hindi\"],\"identifier\":\"domain_4533\",\"media\":[{\"id\":\"blacktint\",\"type\":\"image\",\"src\":\"https://community.ekstep.in/assets/public/content/14659048074781463388910130blacktint.png\",\"preload\":true},{\"id\":\"record\",\"type\":\"image\",\"src\":\"https://community.ekstep.in/assets/public/content/14659048081011463388910720record.png\",\"preload\":true},{\"id\":\"stop_record\",\"type\":\"image\",\"src\":\"https://community.ekstep.in/assets/public/content/14659048079251463388910583stop.png\",\"preload\":true},{\"id\":\"icon_sound\",\"type\":\"image\",\"src\":\"https://community.ekstep.in/assets/public/content/14659048086161463388911157icon_sound.png\",\"preload\":true},{\"id\":\"domain_10624\",\"type\":\"image\",\"src\":\"https://community.ekstep.in/assets/public/content/roti_323_1465971255_1465971255545.jpg\",\"assetId\":\"domain_10624\"},{\"id\":\"domain_10561\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/story11q4a1_141_1465970351_1465970351272.mp3\",\"assetId\":\"domain_10561\"}]}]},\"SET_OBJECT_TYPE_KEY\":\"AssessmentItem\",\"shuffle\":false,\"lastUpdatedBy\":\"141\",\"owner\":\"Ilimi\",\"used_for\":\"assessment\",\"max_score\":1,\"gradeLevel\":[\"Grade 1\"],\"item_sets\":[{\"id\":\"do_30016593\",\"count\":1}],\"language\":[\"English\"],\"identifier\":\"do_30016593\"}},{\"name\":\"assessment_e9ba0aea-5717-4e5a-82bd-331ce4e6e4bc\",\"type\":\"items\",\"id\":\"assessment_e9ba0aea-5717-4e5a-82bd-331ce4e6e4bc\",\"__cdata\":{\"total_items\":1,\"subject\":\"domain\",\"code\":\"ItemSet_3c22a625-1853-45d6-88a1-fb7e9da22e81\",\"type\":\"materialised\",\"lastUpdatedOn\":\"2016-06-23T07:03:19.033+0000\",\"showImmediateFeedback\":true,\"SET_TYPE\":\"MATERIALISED_SET\",\"createdOn\":\"2016-06-23T07:03:19.023+0000\",\"title\":\"Assessment Title\",\"items\":{\"do_30016595\":[{\"model\":{\"keys\":\"त,ता,ति,ती,तु,तू,ते,तै,तो,तौ,तं,तः,ल,ला,लि,ली,लु,लू,ब,बा,बि,बी,बु,बू\"},\"question_audio\":\"domain_8203\",\"subject\":\"domain\",\"template_id\":\"do_30013065\",\"type\":\"ftb\",\"feedback\":\"\",\"qlevel\":\"EASY\",\"title\":\"Story5Q2\",\"question_image\":\"domain_4543\",\"name\":\"Story5Q2\",\"domain\":\"literacy\",\"max_score\":1,\"question\":\"\",\"template\":\"org.ekstep.ftb.barakhadinew\",\"answer\":{\"ans1\":{\"value\":\"तालाब\",\"score\":1}},\"code\":\"org.ekstep.assessmentitem.domain_4544\",\"lastUpdatedOn\":\"2016-06-23T07:02:23.048+0000\",\"concepts\":[{\"identifier\":\"LO1\",\"name\":\"Word Meaning\",\"objectType\":\"Concept\",\"relation\":\"associatedTo\",\"description\":null,\"index\":null}],\"createdOn\":\"2016-05-23T10:24:13.473+0000\",\"lastUpdatedBy\":\"323\",\"used_for\":\"worksheet\",\"owner\":\"323\",\"gradeLevel\":[\"Other\"],\"language\":[\"Hindi\"],\"identifier\":\"domain_4544\",\"media\":[{\"id\":\"blacktint\",\"type\":\"image\",\"src\":\"https://community.ekstep.in/assets/public/content/14659048074781463388910130blacktint.png\",\"preload\":true},{\"id\":\"record\",\"type\":\"image\",\"src\":\"https://community.ekstep.in/assets/public/content/14659048081011463388910720record.png\",\"preload\":true},{\"id\":\"stop_record\",\"type\":\"image\",\"src\":\"https://community.ekstep.in/assets/public/content/14659048079251463388910583stop.png\",\"preload\":true},{\"id\":\"icon_sound\",\"type\":\"image\",\"src\":\"https://community.ekstep.in/assets/public/content/14659048086161463388911157icon_sound.png\",\"preload\":true},{\"id\":\"domain_4543\",\"type\":\"image\",\"src\":\"https://community.ekstep.in/assets/public/content/photo5.2_323_1463999052_1463999053239.jpg\",\"assetId\":\"domain_4543\"},{\"id\":\"domain_8203\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/a1_323_1465817608_1465817608222.mp3\",\"assetId\":\"domain_8203\"}]}]},\"SET_OBJECT_TYPE_KEY\":\"AssessmentItem\",\"shuffle\":false,\"lastUpdatedBy\":\"141\",\"owner\":\"Ilimi\",\"used_for\":\"assessment\",\"max_score\":1,\"gradeLevel\":[\"Grade 1\"],\"item_sets\":[{\"id\":\"do_30016595\",\"count\":1}],\"language\":[\"English\"],\"identifier\":\"do_30016595\"}},{\"name\":\"assessment_4fc1b50e-2577-49dc-bba0-aef91a16c6a9\",\"type\":\"items\",\"id\":\"assessment_4fc1b50e-2577-49dc-bba0-aef91a16c6a9\",\"__cdata\":{\"total_items\":1,\"subject\":\"domain\",\"code\":\"ItemSet_e0e066b7-ae4f-4ad2-a339-971d3f32146f\",\"type\":\"materialised\",\"lastUpdatedOn\":\"2016-06-28T05:31:21.508+0000\",\"showImmediateFeedback\":false,\"SET_TYPE\":\"MATERIALISED_SET\",\"createdOn\":\"2016-06-28T05:31:21.500+0000\",\"title\":\"Assessment Title\",\"items\":{\"do_30020382\":[{\"template\":\"org.ekstep.mcq.ta_v1\",\"question_audio\":\"do_30019709\",\"subject\":\"domain\",\"template_id\":\"do_30017209\",\"code\":\"org.ekstep.assessmentitem.literacy_57720b9be5a64\",\"lastUpdatedOn\":\"2016-06-28T05:31:08.091+0000\",\"type\":\"mcq\",\"concepts\":[{\"identifier\":\"literacy_v2_74\",\"name\":\"Comprehension of stories 2\",\"objectType\":\"Concept\",\"relation\":\"associatedTo\",\"description\":null,\"index\":null}],\"createdOn\":\"2016-06-28T05:31:08.091+0000\",\"feedback\":\"\",\"qlevel\":\"EASY\",\"title\":\"Story5Q7\",\"name\":\"Story5Q7\",\"lastUpdatedBy\":\"141\",\"owner\":\"141\",\"used_for\":\"worksheet\",\"domain\":\"literacy\",\"max_score\":4,\"gradeLevel\":[\"Grade 3\"],\"question\":\"तुम कुत्ते की जगह होते तो दूसरी रोटी कैसे लेते ?\\r\\n\",\"language\":[\"Hindi\"],\"identifier\":\"do_30020381\",\"media\":[{\"id\":\"blacktint\",\"type\":\"image\",\"src\":\"https://community.ekstep.in/assets/public/content/14659048074781463388910130blacktint.png\",\"preload\":true},{\"id\":\"record\",\"type\":\"image\",\"src\":\"https://community.ekstep.in/assets/public/content/14659048081011463388910720record.png\",\"preload\":true},{\"id\":\"stop_record\",\"type\":\"image\",\"src\":\"https://community.ekstep.in/assets/public/content/14659048079251463388910583stop.png\",\"preload\":true},{\"id\":\"icon_sound\",\"type\":\"image\",\"src\":\"https://community.ekstep.in/assets/public/content/14659048086161463388911157icon_sound.png\",\"preload\":true},{\"id\":\"do_30019709\",\"type\":\"audio\",\"src\":\"https://ekstep-public-prod.s3-ap-south-1.amazonaws.com/content/question3_141_1466944214_1466944214080.mp3\",\"asset_id\":\"do_30019709\",\"preload\":true},{\"id\":\"do_30019710\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/option1_141_1466944270_1466944270836.mp3\",\"assetId\":\"do_30019710\"},{\"id\":\"do_30019711\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/option2_141_1466944303_1466944303999.mp3\",\"assetId\":\"do_30019711\"},{\"id\":\"do_30019712\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/option3_141_1466944325_1466944325637.mp3\",\"assetId\":\"do_30019712\"},{\"id\":\"do_30019713\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/option4_141_1466944348_1466944348151.mp3\",\"assetId\":\"do_30019713\"}],\"options\":[{\"marks\":\"1\",\"value\":{\"type\":\"mixed\",\"text\":\"अपनी रोटी नीचे रखता\",\"count\":\"\",\"image\":null,\"audio\":\"do_30019710\",\"fontsize\":150},\"score\":1,\"answer\":true},{\"marks\":\"1\",\"value\":{\"type\":\"mixed\",\"text\":\"बिना भौकें पानी में छलांग लगाता\",\"count\":\"\",\"image\":null,\"audio\":\"do_30019711\",\"fontsize\":150},\"score\":1,\"answer\":true},{\"marks\":\"1\",\"value\":{\"type\":\"mixed\",\"text\":\"परछाईं में तो मैं ही था \",\"count\":\"\",\"image\":null,\"audio\":\"do_30019712\",\"fontsize\":150},\"score\":1,\"answer\":true},{\"marks\":\"1\",\"value\":{\"type\":\"mixed\",\"text\":\"कुछ नहीं करता \",\"count\":\"\",\"image\":null,\"audio\":\"do_30019713\",\"fontsize\":150},\"score\":1,\"answer\":true}]}]},\"SET_OBJECT_TYPE_KEY\":\"AssessmentItem\",\"shuffle\":false,\"lastUpdatedBy\":\"141\",\"owner\":\"Ilimi\",\"used_for\":\"assessment\",\"max_score\":1,\"gradeLevel\":[\"Grade 1\"],\"item_sets\":[{\"id\":\"do_30020382\",\"count\":1}],\"language\":[\"English\"],\"identifier\":\"do_30020382\"}},{\"name\":\"assessment_cf6ddd09-764f-4611-9ab5-82ae8a124ed7\",\"type\":\"items\",\"id\":\"assessment_cf6ddd09-764f-4611-9ab5-82ae8a124ed7\",\"__cdata\":{\"total_items\":1,\"subject\":\"domain\",\"code\":\"ItemSet_3d6a527a-f5d8-40c0-8898-115bdbff0dbc\",\"type\":\"materialised\",\"lastUpdatedOn\":\"2016-06-28T09:15:06.150+0000\",\"showImmediateFeedback\":true,\"SET_TYPE\":\"MATERIALISED_SET\",\"createdOn\":\"2016-06-28T09:15:06.142+0000\",\"title\":\"Assessment Title\",\"items\":{\"do_30022034\":[{\"template\":\"org.ekstep.mcq.ta\",\"question_audio\":\"domain_8210\",\"subject\":\"domain\",\"template_id\":\"domain_3491\",\"code\":\"org.ekstep.assessmentitem.domain_4564\",\"lastUpdatedOn\":\"2016-06-28T09:14:44.613+0000\",\"type\":\"mcq\",\"concepts\":[{\"identifier\":\"LO10\",\"name\":\"Passage Comprehension\",\"objectType\":\"Concept\",\"relation\":\"associatedTo\",\"description\":null,\"index\":null}],\"createdOn\":\"2016-05-23T10:39:51.018+0000\",\"feedback\":\"\",\"qlevel\":\"EASY\",\"title\":\"Story5Q4\",\"name\":\"Story5Q4\",\"lastUpdatedBy\":\"323\",\"owner\":\"323\",\"used_for\":\"worksheet\",\"domain\":\"literacy\",\"max_score\":1,\"gradeLevel\":[\"Other\"],\"question\":\"पानी में कुत्ते को क्या दिखा?\",\"language\":[\"Hindi\"],\"identifier\":\"domain_4564\",\"media\":[{\"id\":\"blacktint\",\"type\":\"image\",\"src\":\"https://community.ekstep.in/assets/public/content/14659048074781463388910130blacktint.png\",\"preload\":true},{\"id\":\"record\",\"type\":\"image\",\"src\":\"https://community.ekstep.in/assets/public/content/14659048081011463388910720record.png\",\"preload\":true},{\"id\":\"stop_record\",\"type\":\"image\",\"src\":\"https://community.ekstep.in/assets/public/content/14659048079251463388910583stop.png\",\"preload\":true},{\"id\":\"icon_sound\",\"type\":\"image\",\"src\":\"https://community.ekstep.in/assets/public/content/14659048086161463388911157icon_sound.png\",\"preload\":true},{\"id\":\"domain_8210\",\"type\":\"audio\",\"src\":\"https://ekstep-public-prod.s3-ap-south-1.amazonaws.com/content/question_323_1465817873_1465817873949.mp3\",\"asset_id\":\"domain_8210\",\"preload\":true},{\"id\":\"domain_8211\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/a1_323_1465817904_1465817904087.mp3\",\"assetId\":\"domain_8211\"},{\"id\":\"domain_8212\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/a2_323_1465817917_1465817917890.mp3\",\"assetId\":\"domain_8212\"},{\"id\":\"domain_8213\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/a3_323_1465817932_1465817932973.mp3\",\"assetId\":\"domain_8213\"},{\"id\":\"domain_8214\",\"type\":\"audio\",\"src\":\"https://community.ekstep.in/assets/public/content/a4_323_1465817942_1465817942044.mp3\",\"assetId\":\"domain_8214\"}],\"options\":[{\"marks\":\"1\",\"value\":{\"type\":\"mixed\",\"text\":\"अपनी परछाई\",\"count\":\"\",\"image\":null,\"audio\":\"domain_8211\",\"fontsize\":150},\"score\":1,\"answer\":true},{\"marks\":\"0\",\"value\":{\"type\":\"mixed\",\"text\":\"घास\",\"count\":\"\",\"image\":null,\"audio\":\"domain_8212\",\"fontsize\":150}},{\"marks\":\"0\",\"value\":{\"type\":\"mixed\",\"text\":\"मिठाई\",\"count\":\"\",\"image\":null,\"audio\":\"domain_8213\",\"fontsize\":150}},{\"marks\":\"0\",\"value\":{\"type\":\"mixed\",\"text\":\"मछली\",\"count\":\"\",\"image\":null,\"audio\":\"domain_8214\",\"fontsize\":150}}]}]},\"SET_OBJECT_TYPE_KEY\":\"AssessmentItem\",\"shuffle\":false,\"lastUpdatedBy\":\"141\",\"owner\":\"Ilimi\",\"used_for\":\"assessment\",\"max_score\":1,\"gradeLevel\":[\"Grade 1\"],\"item_sets\":[{\"id\":\"do_30022034\",\"count\":1}],\"language\":[\"English\"],\"identifier\":\"do_30022034\"}},{\"name\":\"dictionary\",\"type\":\"data\",\"id\":\"dictionary\",\"__cdata\":{}}],\"template\":[{\"text\":{\"event\":{\"action\":[{\"command\":\"stop\",\"sound\":true,\"type\":\"command\"},{\"asset_model\":\"item.question_audio\",\"command\":\"play\",\"type\":\"command\"}],\"type\":\"click\"},\"align\":\"center\",\"color\":\"black\",\"font\":\"Verdana\",\"fontsize\":\"2em\",\"lineHeight\":2,\"model\":\"item.question\",\"valign\":\"middle\",\"w\":100,\"x\":0,\"y\":15},\"shape\":{\"event\":{\"action\":[{\"command\":\"stop\",\"sound\":true,\"type\":\"command\"},{\"asset_model\":\"item.question_audio\",\"command\":\"play\",\"type\":\"command\"}],\"type\":\"click\"},\"h\":10,\"hitArea\":true,\"type\":\"rect\",\"w\":100,\"x\":0,\"y\":15},\"mcq\":{\"options\":{\"shape\":{\"h\":100,\"stroke\":\"black\",\"type\":\"roundrect\",\"w\":100,\"x\":0,\"y\":0},\"text\":{\"align\":\"center\",\"font\":\"Verdana\",\"fontsize\":\"1.6em\",\"h\":100,\"model\":\"option.value.text\",\"valign\":\"middle\",\"w\":100,\"x\":0,\"y\":0},\"event\":{\"action\":[{\"command\":\"stop\",\"sound\":true,\"type\":\"command\"},{\"asset_model\":\"option.value.audio\",\"command\":\"play\",\"type\":\"command\"}],\"type\":\"click\"},\"cols\":4,\"h\":30,\"highlight\":\"yellow\",\"layout\":\"table\",\"marginX\":5,\"marginY\":5,\"options\":\"options\",\"w\":97,\"x\":1.5,\"y\":50},\"model\":\"item\",\"multi_select\":false,\"shadow\":\"#56B1F7\"},\"id\":\"org.ekstep.mcq.ta\"},{\"text\":{\"align\":\"center\",\"color\":\"black\",\"font\":\"Verdana\",\"fontsize\":\"2em\",\"h\":12,\"lineHeight\":1.6,\"model\":\"item.question\",\"valign\":\"middle\",\"w\":80,\"x\":10,\"y\":2,\"z-index\":101},\"shape\":[{\"event\":{\"type\":\"click\"},\"h\":15,\"hitArea\":true,\"opacity\":1,\"w\":80,\"x\":10,\"y\":6,\"z-index\":99},{\"event\":{\"action\":{\"asset_model\":\"item.question_audio\",\"command\":\"play\",\"type\":\"command\"},\"type\":\"click\"},\"h\":40,\"hitArea\":true,\"stroke-width\":5,\"w\":20,\"x\":10,\"y\":58,\"z-index\":99}],\"keyboard_v2\":{\"id\":\"bKeyboard\",\"keys\":\"item.keys\",\"limit\":10,\"target\":\"newText\",\"type\":\"custom\"},\"g\":[{\"text\":{\"align\":\"center\",\"color\":\"black\",\"font\":\"Verdana\",\"fontsize\":\"2em\",\"h\":50,\"id\":\"newText\",\"model\":\"item.ans1\",\"valign\":\"middle\",\"w\":100,\"x\":0,\"y\":50,\"z-index\":100},\"shape\":{\"event\":{\"action\":{\"asset\":\"bKeyboard\",\"command\":\"custom\",\"id\":\"newText\",\"invoke\":\"switchTarget\",\"type\":\"command\"},\"type\":\"click\"},\"h\":50,\"hitArea\":true,\"stroke\":\"black\",\"stroke-width\":5,\"w\":100,\"x\":0,\"y\":50,\"z-index\":99},\"h\":40,\"w\":60,\"x\":40,\"y\":59},{\"image\":{\"align\":\"center\",\"h\":100,\"model\":\"item.question_image\",\"stretch\":false,\"valign\":\"top\",\"w\":100,\"x\":0,\"y\":0,\"z-index\":102},\"h\":40,\"w\":40,\"x\":0,\"y\":59}],\"id\":\"org.ekstep.ftb.barakhadinew\"},{\"text\":{\"event\":{\"action\":[{\"command\":\"stop\",\"sound\":true,\"type\":\"command\"},{\"asset_model\":\"item.question_audio\",\"command\":\"play\",\"type\":\"command\"}],\"type\":\"click\"},\"align\":\"center\",\"color\":\"black\",\"font\":\"Verdana\",\"fontsize\":\"2em\",\"h\":20,\"lineHeight\":2,\"model\":\"item.question\",\"valign\":\"top\",\"w\":100,\"x\":0,\"y\":5},\"shape\":{\"event\":{\"action\":[{\"command\":\"stop\",\"sound\":true,\"type\":\"command\"},{\"asset_model\":\"item.question_audio\",\"command\":\"play\",\"type\":\"command\"}],\"type\":\"click\"},\"h\":10,\"hitArea\":true,\"type\":\"rect\",\"w\":100,\"x\":0,\"y\":15},\"mcq\":{\"options\":{\"shape\":{\"fill\":\"#ccc\",\"h\":100,\"type\":\"roundrect\",\"w\":100,\"x\":0,\"y\":0},\"text\":{\"align\":\"center\",\"font\":\"Verdana\",\"fontsize\":\"1.6em\",\"h\":100,\"lineHeight\":2.25,\"model\":\"option.value.text\",\"valign\":\"middle\",\"w\":100,\"x\":0,\"y\":0},\"event\":{\"action\":[{\"command\":\"stop\",\"sound\":true,\"type\":\"command\"},{\"asset_model\":\"option.value.audio\",\"command\":\"play\",\"type\":\"command\"}],\"type\":\"click\"},\"cols\":4,\"h\":60,\"highlight\":\"yellow\",\"layout\":\"table\",\"marginX\":5,\"marginY\":5,\"options\":\"options\",\"w\":97,\"x\":1.5,\"y\":30},\"model\":\"item\",\"multi_select\":false,\"shadow\":\"#56B1F7\"},\"id\":\"org.ekstep.mcq.ta_v1\"},{\"image\":[{\"event\":{\"action\":{\"type\":\"command\",\"command\":\"show\",\"asset\":\"retryDialog\"},\"type\":\"click\"},\"asset\":\"popupTint\",\"x\":-100,\"y\":-150,\"w\":550,\"h\":600,\"visible\":true,\"id\":\"popup-Tint\"},{\"asset\":\"retryBg\",\"x\":0,\"y\":0,\"w\":150,\"h\":150,\"visible\":true,\"id\":\"right\"}],\"shape\":[{\"event\":{\"action\":[{\"type\":\"command\",\"command\":\"hide\",\"asset\":\"retryDialog\"},{\"type\":\"command\",\"command\":\"SHOWHTMLELEMENTS\",\"asset\":\"retry\"}],\"type\":\"click\"},\"type\":\"roundrect\",\"x\":72,\"y\":25,\"w\":50,\"h\":65,\"visible\":true,\"id\":\"retry\",\"hitArea\":true},{\"event\":{\"action\":{\"type\":\"command\",\"command\":\"transitionTo\",\"asset\":\"theme\",\"param\":\"next\",\"effect\":\"fadein\",\"direction\":\"left\",\"ease\":\"linear\",\"duration\":100},\"type\":\"click\"},\"type\":\"roundrect\",\"x\":110,\"y\":100,\"w\":25,\"h\":35,\"visible\":true,\"id\":\"continue\",\"hitArea\":true}],\"id\":\"retry\"},{\"image\":[{\"event\":{\"action\":{\"type\":\"command\",\"command\":\"show\",\"asset\":\"\"},\"type\":\"click\"},\"asset\":\"popupTint\",\"x\":-100,\"y\":-150,\"w\":550,\"h\":600,\"visible\":true,\"id\":\"popup-Tint\"},{\"event\":{\"action\":[{\"type\":\"command\",\"command\":\"transitionTo\",\"asset\":\"theme\",\"param\":\"next\",\"effect\":\"fadein\",\"direction\":\"left\",\"ease\":\"linear\",\"duration\":500}],\"type\":\"click\"},\"asset\":\"goodjobBg\",\"x\":0,\"y\":0,\"w\":150,\"h\":150,\"visible\":true,\"id\":\"continue\"}],\"id\":\"goodjob\"}],\"stage\":[{\"id\":\"baseStage1\",\"preload\":true,\"image\":[{\"asset\":\"domain_10624\"},{\"asset\":\"domain_4543\"}],\"audio\":[{\"asset\":\"domain_8205\"},{\"asset\":\"domain_8206\"},{\"asset\":\"domain_8207\"},{\"asset\":\"domain_8208\"},{\"asset\":\"domain_10561\"},{\"asset\":\"domain_8203\"},{\"asset\":\"do_30019710\"},{\"asset\":\"do_30019711\"},{\"asset\":\"do_30019712\"},{\"asset\":\"do_30019713\"},{\"asset\":\"domain_8211\"},{\"asset\":\"domain_8212\"},{\"asset\":\"domain_8213\"},{\"asset\":\"domain_8214\"}]},{\"id\":\"recordAudio6\",\"x\":0,\"y\":0,\"w\":100,\"h\":100,\"param\":[{\"name\":\"previousScreen\",\"value\":\"recordAudio5\"},{\"name\":\"nextScreen\",\"value\":\"recordAudio7\"},{\"name\":\"next\",\"value\":\"recordAudio7\"}],\"events\":{\"event\":[{\"action\":[{\"asset\":\"startrec\",\"command\":\"hide\",\"type\":\"command\"},{\"asset\":\"stoprec\",\"command\":\"show\",\"type\":\"command\"},{\"asset\":\"mover\",\"command\":\"show\",\"type\":\"command\"},{\"tween\":{\"to\":[{\"duration\":0,\"ease\":\"linear\",\"__cdata\":\"{\\\"x\\\":47,\\\"y\\\":45}\"},{\"duration\":1000,\"ease\":\"sineInOut\",\"__cdata\":\"{\\\"x\\\":62,\\\"y\\\":45}\"},{\"duration\":1000,\"ease\":\"sineInOut\",\"__cdata\":\"{\\\"x\\\":47,\\\"y\\\":45}\"}],\"id\":\"mover\",\"loop\":true},\"asset\":\"mover\",\"type\":\"animation\"}],\"type\":\"rec_started\"},{\"action\":[{\"asset\":\"stoprec\",\"command\":\"hide\",\"type\":\"command\"},{\"asset\":\"mover\",\"command\":\"hide\",\"type\":\"command\"},{\"asset\":\"playback\",\"command\":\"show\",\"type\":\"command\"}],\"type\":\"rec_stopped\"},{\"action\":{\"type\":\"command\",\"command\":\"play\",\"asset\":\"domain_4111\",\"loop\":1},\"type\":\"enter\"},{\"action\":{\"type\":\"command\",\"command\":\"stop\",\"asset\":\"domain_4111\",\"loop\":1},\"type\":\"exit\"}]},\"image\":[{\"x\":25.8,\"y\":42.58,\"w\":48.61,\"h\":54.44,\"visible\":true,\"editable\":true,\"asset\":\"domain_4088\",\"z-index\":0},{\"x\":45,\"y\":80,\"w\":10,\"h\":18,\"visible\":true,\"editable\":true,\"asset\":\"mic\",\"event\":{\"action\":{\"asset\":\"recorder\",\"command\":\"toggleShow\",\"type\":\"command\"},\"type\":\"click\"},\"z-index\":1}],\"text\":[{\"x\":7.92,\"y\":7.56,\"w\":158.22,\"h\":38.45,\"visible\":true,\"editable\":true,\"__text\":\"        कुत्ते को एक रोटी मिली। \\nरोटी लेकर वह तालाब के किनारे गया । \\n\",\"weight\":\"normal\",\"font\":\"Helvetica\",\"color\":\"rgb(0,0,0)\",\"fontstyle\":\"\",\"fontsize\":117,\"lineHeight\":1.3,\"align\":\"left\",\"z-index\":2}],\"shape\":[],\"hotspot\":[],\"embed\":[],\"div\":[],\"audio\":[{\"asset\":\"domain_4111\"},{\"asset\":\"domain_7490\"},{\"asset\":\"domain_7491\"},{\"asset\":\"domain_7492\"},{\"asset\":\"domain_7493\"},{\"asset\":\"domain_7494\"},{\"asset\":\"domain_7495\"},{\"asset\":\"domain_7496\"},{\"asset\":\"domain_7497\"},{\"asset\":\"domain_7498\"},{\"asset\":\"domain_7499\"},{\"asset\":\"domain_7500\"},{\"asset\":\"domain_7501\"}],\"scribble\":[],\"htext\":[],\"g\":[{\"x\":0,\"y\":0,\"w\":100,\"h\":100,\"visible\":false,\"editable\":true,\"g\":[{\"image\":{\"event\":{\"action\":{\"asset\":\"recorder\",\"command\":\"hide\",\"type\":\"command\"},\"type\":\"click\"},\"asset\":\"blacktint\",\"h\":100,\"w\":100,\"x\":0,\"y\":0},\"h\":100,\"w\":100,\"x\":0,\"y\":0},{\"shape\":[{\"fill\":\"gray\",\"h\":20,\"type\":\"roundrect\",\"w\":30,\"x\":36,\"y\":37},{\"event\":{\"action\":{\"asset\":\"startrec\",\"command\":\"startRecord\",\"failure\":\"rec_start_fail\",\"success\":\"rec_started\",\"type\":\"command\"},\"type\":\"click\"},\"fill\":\"#34e941\",\"h\":20,\"type\":\"roundrect\",\"w\":30,\"x\":35,\"y\":35}],\"image\":{\"asset\":\"record\",\"h\":10,\"w\":6,\"x\":38,\"y\":40},\"text\":{\"color\":\"darkgreen\",\"font\":\"sans-serif\",\"fontsize\":50,\"h\":5,\"w\":20,\"x\":47,\"y\":43,\"__text\":\"Start\"},\"h\":100,\"id\":\"startrec\",\"w\":100,\"x\":0,\"y\":0},{\"shape\":[{\"fill\":\"gray\",\"h\":20,\"type\":\"roundrect\",\"w\":30,\"x\":36,\"y\":37},{\"event\":{\"action\":{\"asset\":\"stoprec\",\"command\":\"stopRecord\",\"failure\":\"rec_stop_failed\",\"success\":\"rec_stopped\",\"type\":\"command\"},\"type\":\"click\"},\"fill\":\"#e93441\",\"h\":20,\"type\":\"roundrect\",\"w\":30,\"x\":35,\"y\":35},{\"fill\":\"#e98888\",\"h\":2,\"id\":\"mover\",\"type\":\"circle\",\"visible\":false,\"w\":2,\"x\":47,\"y\":45}],\"image\":{\"asset\":\"stop_record\",\"h\":10,\"w\":6,\"x\":38,\"y\":40},\"h\":100,\"id\":\"stoprec\",\"visible\":false,\"w\":100,\"x\":0,\"y\":0},{\"shape\":[{\"fill\":\"gray\",\"h\":20,\"type\":\"roundrect\",\"w\":30,\"x\":36,\"y\":37},{\"event\":{\"action\":[{\"asset\":\"current_rec\",\"command\":\"TOGGLEPLAY\",\"type\":\"command\"},{\"asset\":\"recorder\",\"command\":\"hide\",\"type\":\"command\"},{\"asset\":\"playback\",\"command\":\"hide\",\"type\":\"command\"},{\"asset\":\"startrec\",\"command\":\"show\",\"type\":\"command\"}],\"type\":\"click\"},\"fill\":\"#34e941\",\"h\":20,\"type\":\"roundrect\",\"w\":30,\"x\":35,\"y\":35}],\"image\":{\"asset\":\"icon_sound\",\"h\":10,\"id\":\"story_audio_button\",\"w\":6,\"x\":38,\"y\":40},\"text\":{\"color\":\"darkgreen\",\"font\":\"sans-serif\",\"fontsize\":50,\"h\":5,\"w\":20,\"x\":47,\"y\":43,\"__text\":\"Play\"},\"h\":100,\"id\":\"playback\",\"visible\":false,\"w\":100,\"x\":0,\"y\":0}],\"id\":\"recorder\",\"z-index\":3}],\"appEvents\":{\"list\":\"rec_started,rec_start_fail,rec_stopped,rec_stop_failed\"},\"preload\":true},{\"id\":\"recordAudio7\",\"x\":0,\"y\":0,\"w\":100,\"h\":100,\"param\":[{\"name\":\"previousScreen\",\"value\":\"recordAudio6\"},{\"name\":\"nextScreen\",\"value\":\"recordAudio8\"},{\"name\":\"next\",\"value\":\"recordAudio8\"},{\"name\":\"previous\",\"value\":\"recordAudio6\"}],\"events\":{\"event\":[{\"action\":[{\"asset\":\"startrec\",\"command\":\"hide\",\"type\":\"command\"},{\"asset\":\"stoprec\",\"command\":\"show\",\"type\":\"command\"},{\"asset\":\"mover\",\"command\":\"show\",\"type\":\"command\"},{\"tween\":{\"to\":[{\"duration\":0,\"ease\":\"linear\",\"__cdata\":\"{\\\"x\\\":47,\\\"y\\\":45}\"},{\"duration\":1000,\"ease\":\"sineInOut\",\"__cdata\":\"{\\\"x\\\":62,\\\"y\\\":45}\"},{\"duration\":1000,\"ease\":\"sineInOut\",\"__cdata\":\"{\\\"x\\\":47,\\\"y\\\":45}\"}],\"id\":\"mover\",\"loop\":true},\"asset\":\"mover\",\"type\":\"animation\"}],\"type\":\"rec_started\"},{\"action\":[{\"asset\":\"stoprec\",\"command\":\"hide\",\"type\":\"command\"},{\"asset\":\"mover\",\"command\":\"hide\",\"type\":\"command\"},{\"asset\":\"playback\",\"command\":\"show\",\"type\":\"command\"}],\"type\":\"rec_stopped\"},{\"action\":{\"type\":\"command\",\"command\":\"play\",\"asset\":\"domain_4109\",\"loop\":1},\"type\":\"enter\"},{\"action\":{\"type\":\"command\",\"command\":\"stop\",\"asset\":\"domain_4109\",\"loop\":1},\"type\":\"exit\"}]},\"image\":[{\"x\":27.19,\"y\":41.69,\"w\":48.61,\"h\":54.44,\"visible\":true,\"editable\":true,\"asset\":\"domain_4088\",\"z-index\":0},{\"x\":45,\"y\":80,\"w\":10,\"h\":18,\"visible\":true,\"editable\":true,\"asset\":\"mic\",\"event\":{\"action\":{\"asset\":\"recorder\",\"command\":\"toggleShow\",\"type\":\"command\"},\"type\":\"click\"},\"z-index\":1}],\"text\":[{\"x\":10.28,\"y\":3.56,\"w\":125.72,\"h\":12.82,\"visible\":true,\"editable\":true,\"__text\":\"पानी में उसे अपनी परछाई दिखाई दी |\",\"weight\":\"normal\",\"font\":\"Helvetica\",\"color\":\"rgb(0,0,0)\",\"fontstyle\":\"\",\"fontsize\":117,\"lineHeight\":1.3,\"align\":\"left\",\"z-index\":2},{\"x\":16.67,\"y\":16,\"w\":155.72,\"h\":12.82,\"visible\":true,\"editable\":true,\"__text\":\"उसे लगा दूसरे कुत्ते के पास भी \",\"weight\":\"normal\",\"font\":\"Helvetica\",\"color\":\"#000000\",\"fontstyle\":\"\",\"fontsize\":117,\"lineHeight\":1.3,\"align\":\"left\",\"z-index\":3},{\"x\":36.81,\"y\":29.56,\"w\":48.61,\"h\":12.82,\"visible\":true,\"editable\":true,\"__text\":\"एक रोटी है।\",\"weight\":\"normal\",\"font\":\"Helvetica\",\"color\":\"#000000\",\"fontstyle\":\"\",\"fontsize\":117,\"lineHeight\":1.3,\"align\":\"left\",\"z-index\":4}],\"shape\":[],\"hotspot\":[],\"embed\":[],\"div\":[],\"audio\":[{\"asset\":\"domain_4109\"},{\"asset\":\"domain_7502\"},{\"asset\":\"domain_7503\"},{\"asset\":\"domain_7504\"},{\"asset\":\"domain_7505\"},{\"asset\":\"domain_7506\"},{\"asset\":\"domain_7507\"},{\"asset\":\"domain_7508\"},{\"asset\":\"domain_7509\"},{\"asset\":\"domain_7510\"},{\"asset\":\"domain_7511\"},{\"asset\":\"domain_7512\"},{\"asset\":\"domain_7513\"},{\"asset\":\"domain_7514\"},{\"asset\":\"domain_7515\"},{\"asset\":\"domain_7516\"},{\"asset\":\"domain_10530\"}],\"scribble\":[],\"htext\":[],\"g\":[{\"x\":0,\"y\":0,\"w\":100,\"h\":100,\"visible\":false,\"editable\":true,\"g\":[{\"image\":{\"event\":{\"action\":{\"asset\":\"recorder\",\"command\":\"hide\",\"type\":\"command\"},\"type\":\"click\"},\"asset\":\"blacktint\",\"h\":100,\"w\":100,\"x\":0,\"y\":0},\"h\":100,\"w\":100,\"x\":0,\"y\":0},{\"shape\":[{\"fill\":\"gray\",\"h\":20,\"type\":\"roundrect\",\"w\":30,\"x\":36,\"y\":37},{\"event\":{\"action\":{\"asset\":\"startrec\",\"command\":\"startRecord\",\"failure\":\"rec_start_fail\",\"success\":\"rec_started\",\"type\":\"command\"},\"type\":\"click\"},\"fill\":\"#34e941\",\"h\":20,\"type\":\"roundrect\",\"w\":30,\"x\":35,\"y\":35}],\"image\":{\"asset\":\"record\",\"h\":10,\"w\":6,\"x\":38,\"y\":40},\"text\":{\"color\":\"darkgreen\",\"font\":\"sans-serif\",\"fontsize\":50,\"h\":5,\"w\":20,\"x\":47,\"y\":43,\"__text\":\"Start\"},\"h\":100,\"id\":\"startrec\",\"w\":100,\"x\":0,\"y\":0},{\"shape\":[{\"fill\":\"gray\",\"h\":20,\"type\":\"roundrect\",\"w\":30,\"x\":36,\"y\":37},{\"event\":{\"action\":{\"asset\":\"stoprec\",\"command\":\"stopRecord\",\"failure\":\"rec_stop_failed\",\"success\":\"rec_stopped\",\"type\":\"command\"},\"type\":\"click\"},\"fill\":\"#e93441\",\"h\":20,\"type\":\"roundrect\",\"w\":30,\"x\":35,\"y\":35},{\"fill\":\"#e98888\",\"h\":2,\"id\":\"mover\",\"type\":\"circle\",\"visible\":false,\"w\":2,\"x\":47,\"y\":45}],\"image\":{\"asset\":\"stop_record\",\"h\":10,\"w\":6,\"x\":38,\"y\":40},\"h\":100,\"id\":\"stoprec\",\"visible\":false,\"w\":100,\"x\":0,\"y\":0},{\"shape\":[{\"fill\":\"gray\",\"h\":20,\"type\":\"roundrect\",\"w\":30,\"x\":36,\"y\":37},{\"event\":{\"action\":[{\"asset\":\"current_rec\",\"command\":\"TOGGLEPLAY\",\"type\":\"command\"},{\"asset\":\"recorder\",\"command\":\"hide\",\"type\":\"command\"},{\"asset\":\"playback\",\"command\":\"hide\",\"type\":\"command\"},{\"asset\":\"startrec\",\"command\":\"show\",\"type\":\"command\"}],\"type\":\"click\"},\"fill\":\"#34e941\",\"h\":20,\"type\":\"roundrect\",\"w\":30,\"x\":35,\"y\":35}],\"image\":{\"asset\":\"icon_sound\",\"h\":10,\"id\":\"story_audio_button\",\"w\":6,\"x\":38,\"y\":40},\"text\":{\"color\":\"darkgreen\",\"font\":\"sans-serif\",\"fontsize\":50,\"h\":5,\"w\":20,\"x\":47,\"y\":43,\"__text\":\"Play\"},\"h\":100,\"id\":\"playback\",\"visible\":false,\"w\":100,\"x\":0,\"y\":0}],\"id\":\"recorder\",\"z-index\":5}],\"appEvents\":{\"list\":\"rec_started,rec_start_fail,rec_stopped,rec_stop_failed\"}},{\"id\":\"recordAudio8\",\"x\":0,\"y\":0,\"w\":100,\"h\":100,\"param\":[{\"name\":\"previousScreen\",\"value\":\"recordAudio7\"},{\"name\":\"nextScreen\",\"value\":\"recordAudio9\"},{\"name\":\"next\",\"value\":\"recordAudio9\"},{\"name\":\"previous\",\"value\":\"recordAudio7\"}],\"events\":{\"event\":[{\"action\":[{\"asset\":\"startrec\",\"command\":\"hide\",\"type\":\"command\"},{\"asset\":\"stoprec\",\"command\":\"show\",\"type\":\"command\"},{\"asset\":\"mover\",\"command\":\"show\",\"type\":\"command\"},{\"tween\":{\"to\":[{\"duration\":0,\"ease\":\"linear\",\"__cdata\":\"{\\\"x\\\":47,\\\"y\\\":45}\"},{\"duration\":1000,\"ease\":\"sineInOut\",\"__cdata\":\"{\\\"x\\\":62,\\\"y\\\":45}\"},{\"duration\":1000,\"ease\":\"sineInOut\",\"__cdata\":\"{\\\"x\\\":47,\\\"y\\\":45}\"}],\"id\":\"mover\",\"loop\":true},\"asset\":\"mover\",\"type\":\"animation\"}],\"type\":\"rec_started\"},{\"action\":[{\"asset\":\"stoprec\",\"command\":\"hide\",\"type\":\"command\"},{\"asset\":\"mover\",\"command\":\"hide\",\"type\":\"command\"},{\"asset\":\"playback\",\"command\":\"show\",\"type\":\"command\"}],\"type\":\"rec_stopped\"},{\"action\":{\"type\":\"command\",\"command\":\"play\",\"asset\":\"domain_4107\",\"loop\":1},\"type\":\"enter\"},{\"action\":{\"type\":\"command\",\"command\":\"stop\",\"asset\":\"domain_4107\",\"loop\":1},\"type\":\"exit\"}]},\"image\":[{\"x\":25.38,\"y\":40.8,\"w\":48.61,\"h\":54.44,\"visible\":true,\"editable\":true,\"asset\":\"domain_4088\",\"z-index\":0},{\"x\":45,\"y\":80,\"w\":10,\"h\":18,\"visible\":true,\"editable\":true,\"asset\":\"mic\",\"event\":{\"action\":{\"asset\":\"recorder\",\"command\":\"toggleShow\",\"type\":\"command\"},\"type\":\"click\"},\"z-index\":1}],\"text\":[{\"x\":7.92,\"y\":12.22,\"w\":129.88,\"h\":12.82,\"visible\":true,\"editable\":true,\"__text\":\"वह रोटी छीनने का तरीका सोचने लगा।\",\"weight\":\"normal\",\"font\":\"Helvetica\",\"color\":\"rgb(0,0,0)\",\"fontstyle\":\"\",\"fontsize\":117,\"lineHeight\":1.3,\"align\":\"left\",\"z-index\":2},{\"x\":13.89,\"y\":25.11,\"w\":123.08,\"h\":12.82,\"visible\":true,\"editable\":true,\"__text\":\"उसने भौंकने के लिए मुँह खोला।\",\"weight\":\"normal\",\"font\":\"Helvetica\",\"color\":\"#000000\",\"fontstyle\":\"\",\"fontsize\":117,\"lineHeight\":1.3,\"align\":\"left\",\"z-index\":3}],\"shape\":[],\"hotspot\":[],\"embed\":[],\"div\":[],\"audio\":[{\"asset\":\"domain_4107\"},{\"asset\":\"domain_7517\"},{\"asset\":\"domain_7518\"},{\"asset\":\"domain_7519\"},{\"asset\":\"domain_7520\"},{\"asset\":\"domain_7521\"},{\"asset\":\"domain_7522\"},{\"asset\":\"domain_7523\"},{\"asset\":\"domain_7526\"},{\"asset\":\"domain_7530\"},{\"asset\":\"domain_7531\"},{\"asset\":\"domain_7533\"},{\"asset\":\"domain_7537\"},{\"asset\":\"domain_7545\"}],\"scribble\":[],\"htext\":[],\"g\":[{\"x\":0,\"y\":0,\"w\":100,\"h\":100,\"visible\":false,\"editable\":true,\"g\":[{\"image\":{\"event\":{\"action\":{\"asset\":\"recorder\",\"command\":\"hide\",\"type\":\"command\"},\"type\":\"click\"},\"asset\":\"blacktint\",\"h\":100,\"w\":100,\"x\":0,\"y\":0},\"h\":100,\"w\":100,\"x\":0,\"y\":0},{\"shape\":[{\"fill\":\"gray\",\"h\":20,\"type\":\"roundrect\",\"w\":30,\"x\":36,\"y\":37},{\"event\":{\"action\":{\"asset\":\"startrec\",\"command\":\"startRecord\",\"failure\":\"rec_start_fail\",\"success\":\"rec_started\",\"type\":\"command\"},\"type\":\"click\"},\"fill\":\"#34e941\",\"h\":20,\"type\":\"roundrect\",\"w\":30,\"x\":35,\"y\":35}],\"image\":{\"asset\":\"record\",\"h\":10,\"w\":6,\"x\":38,\"y\":40},\"text\":{\"color\":\"darkgreen\",\"font\":\"sans-serif\",\"fontsize\":50,\"h\":5,\"w\":20,\"x\":47,\"y\":43,\"__text\":\"Start\"},\"h\":100,\"id\":\"startrec\",\"w\":100,\"x\":0,\"y\":0},{\"shape\":[{\"fill\":\"gray\",\"h\":20,\"type\":\"roundrect\",\"w\":30,\"x\":36,\"y\":37},{\"event\":{\"action\":{\"asset\":\"stoprec\",\"command\":\"stopRecord\",\"failure\":\"rec_stop_failed\",\"success\":\"rec_stopped\",\"type\":\"command\"},\"type\":\"click\"},\"fill\":\"#e93441\",\"h\":20,\"type\":\"roundrect\",\"w\":30,\"x\":35,\"y\":35},{\"fill\":\"#e98888\",\"h\":2,\"id\":\"mover\",\"type\":\"circle\",\"visible\":false,\"w\":2,\"x\":47,\"y\":45}],\"image\":{\"asset\":\"stop_record\",\"h\":10,\"w\":6,\"x\":38,\"y\":40},\"h\":100,\"id\":\"stoprec\",\"visible\":false,\"w\":100,\"x\":0,\"y\":0},{\"shape\":[{\"fill\":\"gray\",\"h\":20,\"type\":\"roundrect\",\"w\":30,\"x\":36,\"y\":37},{\"event\":{\"action\":[{\"asset\":\"current_rec\",\"command\":\"TOGGLEPLAY\",\"type\":\"command\"},{\"asset\":\"recorder\",\"command\":\"hide\",\"type\":\"command\"},{\"asset\":\"playback\",\"command\":\"hide\",\"type\":\"command\"},{\"asset\":\"startrec\",\"command\":\"show\",\"type\":\"command\"}],\"type\":\"click\"},\"fill\":\"#34e941\",\"h\":20,\"type\":\"roundrect\",\"w\":30,\"x\":35,\"y\":35}],\"image\":{\"asset\":\"icon_sound\",\"h\":10,\"id\":\"story_audio_button\",\"w\":6,\"x\":38,\"y\":40},\"text\":{\"color\":\"darkgreen\",\"font\":\"sans-serif\",\"fontsize\":50,\"h\":5,\"w\":20,\"x\":47,\"y\":43,\"__text\":\"Play\"},\"h\":100,\"id\":\"playback\",\"visible\":false,\"w\":100,\"x\":0,\"y\":0}],\"id\":\"recorder\",\"z-index\":4}],\"appEvents\":{\"list\":\"rec_started,rec_start_fail,rec_stopped,rec_stop_failed\"}},{\"id\":\"recordAudio9\",\"x\":0,\"y\":0,\"w\":100,\"h\":100,\"param\":[{\"name\":\"previousScreen\",\"value\":\"recordAudio8\"},{\"name\":\"nextScreen\",\"value\":\"endScreen\"},{\"name\":\"next\",\"value\":\"scenec03f4d91-0caa-44b4-8e60-94f53d6617dd\"},{\"name\":\"previous\",\"value\":\"recordAudio8\"}],\"events\":{\"event\":[{\"action\":[{\"asset\":\"startrec\",\"command\":\"hide\",\"type\":\"command\"},{\"asset\":\"stoprec\",\"command\":\"show\",\"type\":\"command\"},{\"asset\":\"mover\",\"command\":\"show\",\"type\":\"command\"},{\"tween\":{\"to\":[{\"duration\":0,\"ease\":\"linear\",\"__cdata\":\"{\\\"x\\\":47,\\\"y\\\":45}\"},{\"duration\":1000,\"ease\":\"sineInOut\",\"__cdata\":\"{\\\"x\\\":62,\\\"y\\\":45}\"},{\"duration\":1000,\"ease\":\"sineInOut\",\"__cdata\":\"{\\\"x\\\":47,\\\"y\\\":45}\"}],\"id\":\"mover\",\"loop\":true},\"asset\":\"mover\",\"type\":\"animation\"}],\"type\":\"rec_started\"},{\"action\":[{\"asset\":\"stoprec\",\"command\":\"hide\",\"type\":\"command\"},{\"asset\":\"mover\",\"command\":\"hide\",\"type\":\"command\"},{\"asset\":\"playback\",\"command\":\"show\",\"type\":\"command\"}],\"type\":\"rec_stopped\"},{\"action\":{\"type\":\"command\",\"command\":\"play\",\"asset\":\"domain_4106\",\"loop\":1},\"type\":\"enter\"},{\"action\":{\"type\":\"command\",\"command\":\"stop\",\"asset\":\"domain_4106\",\"loop\":1},\"type\":\"exit\"}]},\"image\":[{\"x\":26.63,\"y\":38.8,\"w\":48.61,\"h\":54.44,\"visible\":true,\"editable\":true,\"asset\":\"domain_4088\",\"z-index\":0},{\"x\":45,\"y\":80,\"w\":10,\"h\":18,\"visible\":true,\"editable\":true,\"asset\":\"mic\",\"event\":{\"action\":{\"asset\":\"recorder\",\"command\":\"toggleShow\",\"type\":\"command\"},\"type\":\"click\"},\"z-index\":1}],\"text\":[{\"x\":7.92,\"y\":12.89,\"w\":152.38,\"h\":12.82,\"visible\":true,\"editable\":true,\"__text\":\"मुँह खोलते ही रोटी तालाब में गिर गई।\",\"weight\":\"normal\",\"font\":\"Helvetica\",\"color\":\"rgb(0,0,0)\",\"fontstyle\":\"\",\"fontsize\":117,\"lineHeight\":1.3,\"align\":\"left\",\"z-index\":2}],\"shape\":[],\"hotspot\":[],\"embed\":[],\"div\":[],\"audio\":[{\"asset\":\"domain_4106\"},{\"asset\":\"domain_7546\"},{\"asset\":\"domain_7547\"},{\"asset\":\"domain_7548\"},{\"asset\":\"domain_7549\"},{\"asset\":\"domain_7556\"},{\"asset\":\"domain_7557\"},{\"asset\":\"domain_7558\"},{\"asset\":\"domain_7559\"}],\"scribble\":[],\"htext\":[],\"g\":[{\"x\":0,\"y\":0,\"w\":100,\"h\":100,\"visible\":false,\"editable\":true,\"g\":[{\"image\":{\"event\":{\"action\":{\"asset\":\"recorder\",\"command\":\"hide\",\"type\":\"command\"},\"type\":\"click\"},\"asset\":\"blacktint\",\"h\":100,\"w\":100,\"x\":0,\"y\":0},\"h\":100,\"w\":100,\"x\":0,\"y\":0},{\"shape\":[{\"fill\":\"gray\",\"h\":20,\"type\":\"roundrect\",\"w\":30,\"x\":36,\"y\":37},{\"event\":{\"action\":{\"asset\":\"startrec\",\"command\":\"startRecord\",\"failure\":\"rec_start_fail\",\"success\":\"rec_started\",\"type\":\"command\"},\"type\":\"click\"},\"fill\":\"#34e941\",\"h\":20,\"type\":\"roundrect\",\"w\":30,\"x\":35,\"y\":35}],\"image\":{\"asset\":\"record\",\"h\":10,\"w\":6,\"x\":38,\"y\":40},\"text\":{\"color\":\"darkgreen\",\"font\":\"sans-serif\",\"fontsize\":50,\"h\":5,\"w\":20,\"x\":47,\"y\":43,\"__text\":\"Start\"},\"h\":100,\"id\":\"startrec\",\"w\":100,\"x\":0,\"y\":0},{\"shape\":[{\"fill\":\"gray\",\"h\":20,\"type\":\"roundrect\",\"w\":30,\"x\":36,\"y\":37},{\"event\":{\"action\":{\"asset\":\"stoprec\",\"command\":\"stopRecord\",\"failure\":\"rec_stop_failed\",\"success\":\"rec_stopped\",\"type\":\"command\"},\"type\":\"click\"},\"fill\":\"#e93441\",\"h\":20,\"type\":\"roundrect\",\"w\":30,\"x\":35,\"y\":35},{\"fill\":\"#e98888\",\"h\":2,\"id\":\"mover\",\"type\":\"circle\",\"visible\":false,\"w\":2,\"x\":47,\"y\":45}],\"image\":{\"asset\":\"stop_record\",\"h\":10,\"w\":6,\"x\":38,\"y\":40},\"h\":100,\"id\":\"stoprec\",\"visible\":false,\"w\":100,\"x\":0,\"y\":0},{\"shape\":[{\"fill\":\"gray\",\"h\":20,\"type\":\"roundrect\",\"w\":30,\"x\":36,\"y\":37},{\"event\":{\"action\":[{\"asset\":\"current_rec\",\"command\":\"TOGGLEPLAY\",\"type\":\"command\"},{\"asset\":\"recorder\",\"command\":\"hide\",\"type\":\"command\"},{\"asset\":\"playback\",\"command\":\"hide\",\"type\":\"command\"},{\"asset\":\"startrec\",\"command\":\"show\",\"type\":\"command\"}],\"type\":\"click\"},\"fill\":\"#34e941\",\"h\":20,\"type\":\"roundrect\",\"w\":30,\"x\":35,\"y\":35}],\"image\":{\"asset\":\"icon_sound\",\"h\":10,\"id\":\"story_audio_button\",\"w\":6,\"x\":38,\"y\":40},\"text\":{\"color\":\"darkgreen\",\"font\":\"sans-serif\",\"fontsize\":50,\"h\":5,\"w\":20,\"x\":47,\"y\":43,\"__text\":\"Play\"},\"h\":100,\"id\":\"playback\",\"visible\":false,\"w\":100,\"x\":0,\"y\":0}],\"id\":\"recorder\",\"z-index\":3}],\"appEvents\":{\"list\":\"rec_started,rec_start_fail,rec_stopped,rec_stop_failed\"}},{\"id\":\"scenec03f4d91-0caa-44b4-8e60-94f53d6617dd\",\"x\":0,\"y\":0,\"w\":100,\"h\":100,\"param\":[{\"name\":\"next\",\"value\":\"scene043478c9-8885-4cd3-94e5-88e07e3664fc\"},{\"name\":\"previous\",\"value\":\"recordAudio9\"}],\"events\":{\"event\":[{\"action\":{\"type\":\"command\",\"command\":\"play\",\"asset\":\"domain_10651\",\"loop\":1},\"type\":\"enter\"},{\"action\":{\"type\":\"command\",\"command\":\"stop\",\"asset\":\"domain_10651\",\"loop\":1},\"type\":\"exit\"}]},\"image\":[],\"text\":[{\"x\":22.5,\"y\":9.33,\"w\":85.35,\"h\":12.82,\"visible\":true,\"editable\":true,\"__text\":\"शब्द को छूएं और सुनें \",\"weight\":\"bold\",\"font\":\"Helvetica\",\"color\":\"#000000\",\"fontstyle\":\"\",\"fontsize\":117,\"lineHeight\":1.3,\"align\":\"left\",\"z-index\":0},{\"x\":62.22,\"y\":29.33,\"w\":48.61,\"h\":12.82,\"visible\":true,\"editable\":true,\"__text\":\"भौंकने\",\"weight\":\"normal\",\"font\":\"Helvetica\",\"color\":\"#000000\",\"fontstyle\":\"\",\"fontsize\":117,\"lineHeight\":1.3,\"align\":\"left\",\"z-index\":2},{\"x\":19.31,\"y\":29.56,\"w\":48.61,\"h\":12.82,\"visible\":true,\"editable\":true,\"__text\":\"कुत्ते\",\"weight\":\"normal\",\"font\":\"Helvetica\",\"color\":\"#000000\",\"fontstyle\":\"\",\"fontsize\":117,\"lineHeight\":1.3,\"align\":\"left\",\"z-index\":3},{\"x\":39.44,\"y\":57.33,\"w\":48.61,\"h\":12.82,\"visible\":true,\"editable\":true,\"__text\":\" छीनने\",\"weight\":\"normal\",\"font\":\"Helvetica\",\"color\":\"#000000\",\"fontstyle\":\"\",\"fontsize\":117,\"lineHeight\":1.3,\"align\":\"left\",\"z-index\":6},{\"x\":16.11,\"y\":56,\"w\":20.42,\"h\":12.82,\"visible\":true,\"editable\":true,\"__text\":\"परछाई\",\"weight\":\"normal\",\"font\":\"Helvetica\",\"color\":\"#000000\",\"fontstyle\":\"\",\"fontsize\":117,\"lineHeight\":1.3,\"align\":\"left\",\"z-index\":7},{\"x\":64.58,\"y\":56.22,\"w\":48.61,\"h\":12.82,\"visible\":true,\"editable\":true,\"__text\":\"तरीका\",\"weight\":\"normal\",\"font\":\"Helvetica\",\"color\":\"#000000\",\"fontstyle\":\"\",\"fontsize\":117,\"lineHeight\":1.3,\"align\":\"left\",\"z-index\":8}],\"shape\":[],\"hotspot\":[{\"x\":20.42,\"y\":29.78,\"w\":7.5,\"h\":10.44,\"visible\":true,\"editable\":true,\"type\":\"roundrect\",\"radius\":1,\"fill\":\"red\",\"stroke-width\":1,\"hitArea\":true,\"event\":[{\"action\":[{\"type\":\"command\",\"command\":\"play\",\"asset\":\"domain_10642\"}],\"type\":\"click\"}],\"keyword\":\"\",\"z-index\":1},{\"x\":62.33,\"y\":29.81,\"w\":15.83,\"h\":7.78,\"visible\":true,\"editable\":true,\"type\":\"roundrect\",\"radius\":1,\"fill\":\"red\",\"stroke-width\":1,\"hitArea\":true,\"event\":[{\"action\":[{\"type\":\"command\",\"command\":\"play\",\"asset\":\"domain_10644\"}],\"type\":\"click\"}],\"keyword\":\"\",\"z-index\":4},{\"x\":40,\"y\":55.59,\"w\":15.14,\"h\":12.22,\"visible\":true,\"editable\":true,\"type\":\"roundrect\",\"radius\":1,\"fill\":\"red\",\"stroke-width\":1,\"hitArea\":true,\"event\":[{\"action\":[{\"type\":\"command\",\"command\":\"play\",\"asset\":\"domain_10650\"}],\"type\":\"click\"}],\"keyword\":\"\",\"z-index\":5},{\"x\":16.25,\"y\":56.44,\"w\":17.08,\"h\":10,\"visible\":true,\"editable\":true,\"type\":\"roundrect\",\"radius\":1,\"fill\":\"red\",\"stroke-width\":1,\"hitArea\":true,\"event\":[{\"action\":[{\"type\":\"command\",\"command\":\"play\",\"asset\":\"do_30032054\"}],\"type\":\"click\"}],\"keyword\":\"\",\"z-index\":9},{\"x\":65.28,\"y\":54.22,\"w\":13.89,\"h\":14.22,\"visible\":true,\"editable\":true,\"type\":\"roundrect\",\"radius\":1,\"fill\":\"red\",\"stroke-width\":1,\"hitArea\":true,\"event\":[{\"action\":[{\"type\":\"command\",\"command\":\"play\",\"asset\":\"do_30032055\"}],\"type\":\"click\"}],\"keyword\":\"\",\"z-index\":10}],\"embed\":[],\"div\":[],\"audio\":[{\"asset\":\"domain_10639\"},{\"asset\":\"domain_10642\"},{\"asset\":\"domain_10644\"},{\"asset\":\"domain_10650\"},{\"asset\":\"domain_10651\"},{\"asset\":\"do_30032054\"},{\"asset\":\"do_30032055\"}],\"scribble\":[],\"htext\":[],\"g\":[]},{\"id\":\"scene043478c9-8885-4cd3-94e5-88e07e3664fc\",\"x\":0,\"y\":0,\"w\":100,\"h\":100,\"param\":[{\"name\":\"next\",\"value\":\"scenef287cc18-da71-443f-a858-537ef54c6680\"},{\"name\":\"previous\",\"value\":\"scenec03f4d91-0caa-44b4-8e60-94f53d6617dd\"}],\"events\":{\"event\":[]},\"image\":[{\"x\":29.44,\"y\":23.33,\"w\":43.75,\"h\":70,\"visible\":true,\"editable\":true,\"asset\":\"domain_4228\",\"z-index\":0}],\"text\":[{\"x\":32.5,\"y\":8.89,\"w\":48.61,\"h\":12.82,\"visible\":true,\"editable\":true,\"__text\":\"सवाल - जवाब\",\"weight\":\"bold\",\"font\":\"Helvetica\",\"color\":\"#000000\",\"fontstyle\":\"\",\"fontsize\":117,\"lineHeight\":1.3,\"align\":\"left\",\"z-index\":1}],\"shape\":[],\"hotspot\":[],\"embed\":[],\"div\":[],\"audio\":[],\"scribble\":[],\"htext\":[],\"g\":[]},{\"id\":\"scenef287cc18-da71-443f-a858-537ef54c6680\",\"x\":0,\"y\":0,\"w\":100,\"h\":100,\"param\":[{\"name\":\"next\",\"value\":\"scenee7dc6a6e-c476-402d-a766-de9c90902407\"},{\"name\":\"previous\",\"value\":\"scene043478c9-8885-4cd3-94e5-88e07e3664fc\"}],\"events\":{\"event\":[]},\"image\":[],\"text\":[{\"x\":23.06,\"y\":46.44,\"w\":98.89,\"h\":9.32,\"visible\":true,\"editable\":true,\"__text\":\"कुत्ता को रास्ते में क्या मिला?\",\"weight\":\"bold\",\"font\":\"Helvetica\",\"color\":\"#000000\",\"fontstyle\":\"\",\"fontsize\":85,\"lineHeight\":1.3,\"align\":\"left\",\"z-index\":0}],\"shape\":[],\"hotspot\":[{\"x\":19.44,\"y\":43.33,\"w\":60.69,\"h\":13.11,\"visible\":true,\"editable\":true,\"type\":\"roundrect\",\"radius\":1,\"fill\":\"rgb(166, 77, 121)\",\"stroke-width\":1,\"hitArea\":true,\"event\":[{\"action\":[{\"type\":\"command\",\"command\":\"togglePlay\",\"asset\":\"do_30082853\"}],\"type\":\"click\"}],\"keyword\":\"\",\"z-index\":1}],\"embed\":[],\"div\":[],\"audio\":[{\"asset\":\"do_30082853\"}],\"scribble\":[],\"htext\":[],\"g\":[]},{\"id\":\"scenee7dc6a6e-c476-402d-a766-de9c90902407\",\"x\":0,\"y\":0,\"w\":100,\"h\":100,\"param\":[{\"name\":\"next\",\"value\":\"sceneea28d2ce-2e74-4a2d-9980-0c7e56b5cdfa\"},{\"name\":\"previous\",\"value\":\"scenef287cc18-da71-443f-a858-537ef54c6680\"}],\"events\":{\"event\":[]},\"image\":[],\"text\":[{\"x\":12.5,\"y\":46.22,\"w\":119.03,\"h\":9.32,\"visible\":true,\"editable\":true,\"__text\":\"कुत्ता रोटी लेकर तालाब के पास क्यों गया?\",\"weight\":\"bold\",\"font\":\"Helvetica\",\"color\":\"#000000\",\"fontstyle\":\"\",\"fontsize\":85,\"lineHeight\":1.3,\"align\":\"left\",\"z-index\":0}],\"shape\":[],\"hotspot\":[{\"x\":11.81,\"y\":42.22,\"w\":77.36,\"h\":15.56,\"visible\":true,\"editable\":true,\"type\":\"roundrect\",\"radius\":1,\"fill\":\"rgb(53, 28, 117)\",\"stroke-width\":1,\"hitArea\":true,\"event\":[{\"action\":[{\"type\":\"command\",\"command\":\"togglePlay\",\"asset\":\"do_30082859\"}],\"type\":\"click\"}],\"keyword\":\"\",\"z-index\":1}],\"embed\":[],\"div\":[],\"audio\":[{\"asset\":\"do_30082859\"}],\"scribble\":[],\"htext\":[],\"g\":[]},{\"id\":\"sceneea28d2ce-2e74-4a2d-9980-0c7e56b5cdfa\",\"x\":0,\"y\":0,\"w\":100,\"h\":100,\"param\":[{\"name\":\"next\",\"value\":\"scene93ddb4bd-8d03-4d9b-bb74-048330dffe9b\"},{\"name\":\"previous\",\"value\":\"scenee7dc6a6e-c476-402d-a766-de9c90902407\"}],\"events\":{\"event\":[]},\"image\":[],\"text\":[{\"x\":20.28,\"y\":45.33,\"w\":88.06,\"h\":9.32,\"visible\":true,\"editable\":true,\"__text\":\"कुत्ता क्या सोचकर भौंकने लगा?\",\"weight\":\"bold\",\"font\":\"Helvetica\",\"color\":\"#000000\",\"fontstyle\":\"\",\"fontsize\":85,\"lineHeight\":1.3,\"align\":\"left\",\"z-index\":0}],\"shape\":[],\"hotspot\":[{\"x\":15.97,\"y\":41.78,\"w\":70,\"h\":14.22,\"visible\":true,\"editable\":true,\"type\":\"roundrect\",\"radius\":1,\"fill\":\"rgb(127, 96, 0)\",\"stroke-width\":1,\"hitArea\":true,\"event\":[{\"action\":[{\"type\":\"command\",\"command\":\"togglePlay\",\"asset\":\"do_30082862\"}],\"type\":\"click\"}],\"keyword\":\"\",\"z-index\":1}],\"embed\":[],\"div\":[],\"audio\":[{\"asset\":\"do_30082862\"}],\"scribble\":[],\"htext\":[],\"g\":[]},{\"id\":\"scene93ddb4bd-8d03-4d9b-bb74-048330dffe9b\",\"x\":0,\"y\":0,\"w\":100,\"h\":100,\"param\":[{\"name\":\"next\",\"value\":\"scenec7c78853-865b-4402-9896-59ed3600d08e\"},{\"name\":\"previous\",\"value\":\"sceneea28d2ce-2e74-4a2d-9980-0c7e56b5cdfa\"}],\"events\":{\"event\":[]},\"image\":[],\"text\":[{\"x\":9.58,\"y\":42,\"w\":125.56,\"h\":9.32,\"visible\":true,\"editable\":true,\"__text\":\"कौन-कौन से अनाज की रोटी बनाई जाती है?\",\"weight\":\"bold\",\"font\":\"Helvetica\",\"color\":\"#000000\",\"fontstyle\":\"\",\"fontsize\":85,\"lineHeight\":1.3,\"align\":\"left\",\"z-index\":0}],\"shape\":[],\"hotspot\":[{\"x\":9.03,\"y\":36.67,\"w\":80.69,\"h\":16.67,\"visible\":true,\"editable\":true,\"type\":\"roundrect\",\"radius\":1,\"fill\":\"rgb(17, 85, 204)\",\"stroke-width\":1,\"hitArea\":true,\"event\":[{\"action\":[{\"type\":\"command\",\"command\":\"togglePlay\",\"asset\":\"do_30082865\"}],\"type\":\"click\"}],\"keyword\":\"\",\"z-index\":1}],\"embed\":[],\"div\":[],\"audio\":[{\"asset\":\"do_30082865\"}],\"scribble\":[],\"htext\":[],\"g\":[]},{\"id\":\"scenec7c78853-865b-4402-9896-59ed3600d08e\",\"x\":0,\"y\":0,\"w\":100,\"h\":100,\"param\":[{\"name\":\"next\",\"value\":\"scenec8cab6a8-f6e9-4f37-ba22-5db1e0220534\"},{\"name\":\"previous\",\"value\":\"scene93ddb4bd-8d03-4d9b-bb74-048330dffe9b\"}],\"events\":{\"event\":[]},\"image\":[],\"text\":[{\"x\":26.11,\"y\":47.33,\"w\":76.39,\"h\":9.32,\"visible\":true,\"editable\":true,\"__text\":\"कुत्ता कैसा जानवर होता है?\",\"weight\":\"bold\",\"font\":\"Helvetica\",\"color\":\"#000000\",\"fontstyle\":\"\",\"fontsize\":85,\"lineHeight\":1.3,\"align\":\"left\",\"z-index\":0}],\"shape\":[],\"hotspot\":[{\"x\":23.19,\"y\":42,\"w\":57.08,\"h\":16,\"visible\":true,\"editable\":true,\"type\":\"roundrect\",\"radius\":1,\"fill\":\"rgb(241, 194, 50)\",\"stroke-width\":1,\"hitArea\":true,\"event\":[{\"action\":[{\"type\":\"command\",\"command\":\"togglePlay\",\"asset\":\"do_30082871\"}],\"type\":\"click\"}],\"keyword\":\"\",\"z-index\":1}],\"embed\":[],\"div\":[],\"audio\":[{\"asset\":\"do_30082871\"}],\"scribble\":[],\"htext\":[],\"g\":[]},{\"id\":\"scenec8cab6a8-f6e9-4f37-ba22-5db1e0220534\",\"x\":0,\"y\":0,\"w\":100,\"h\":100,\"param\":[{\"name\":\"next\",\"value\":\"scene7874c633-fcfb-495e-b013-be382cfa7db3\"},{\"name\":\"previous\",\"value\":\"scenec7c78853-865b-4402-9896-59ed3600d08e\"}],\"events\":{\"event\":[]},\"image\":[],\"text\":[{\"x\":15.14,\"y\":40.89,\"w\":72.22,\"h\":18.64,\"visible\":true,\"editable\":true,\"__text\":\"जब रोटी तालाब में गिर गई तो कुत्ता ने क्या किया?\",\"weight\":\"bold\",\"font\":\"Helvetica\",\"color\":\"rgb(0, 0, 0)\",\"fontstyle\":\"\",\"fontsize\":85,\"lineHeight\":1.3,\"align\":\"left\",\"z-index\":0}],\"shape\":[],\"hotspot\":[{\"x\":12.22,\"y\":36.44,\"w\":72.78,\"h\":22.22,\"visible\":true,\"editable\":true,\"type\":\"roundrect\",\"radius\":1,\"fill\":\"red\",\"stroke-width\":1,\"hitArea\":true,\"event\":[{\"action\":[{\"type\":\"command\",\"command\":\"togglePlay\",\"asset\":\"do_30082873\"}],\"type\":\"click\"}],\"keyword\":\"\",\"z-index\":1}],\"embed\":[],\"div\":[],\"audio\":[{\"asset\":\"do_30082873\"},{\"asset\":\"do_30082873\"}],\"scribble\":[],\"htext\":[],\"g\":[]},{\"id\":\"scene7874c633-fcfb-495e-b013-be382cfa7db3\",\"x\":0,\"y\":0,\"w\":100,\"h\":100,\"param\":[{\"name\":\"next\",\"value\":\"scenee9ba0aea-5717-4e5a-82bd-331ce4e6e4bc\"},{\"name\":\"previous\",\"value\":\"scenec8cab6a8-f6e9-4f37-ba22-5db1e0220534\"}],\"events\":{\"event\":[{\"action\":[{\"type\":\"command\",\"command\":\"play\",\"asset\":\"retry_audio\"},{\"type\":\"command\",\"command\":\"show\",\"asset\":\"retryDialog\"},{\"tween\":{\"to\":{\"ease\":\"bounceOut \",\"duration\":1500,\"__cdata\":{\"x\":20,\"y\":20,\"w\":40,\"h\":30}},\"id\":\"retryShowAnim\"},\"type\":\"animation\",\"asset\":\"retryDialog\"}],\"type\":\"wrong_response\"},{\"action\":[{\"type\":\"command\",\"command\":\"play\",\"asset\":\"goodjob_audio\"},{\"type\":\"command\",\"command\":\"show\",\"asset\":\"goodjobDialog\"},{\"tween\":{\"to\":{\"ease\":\"bounceOut\",\"duration\":1500,\"__cdata\":{\"x\":20,\"y\":20,\"w\":40,\"h\":30}},\"id\":\"gjShowAnim\"},\"type\":\"animation\",\"asset\":\"goodjobDialog\"}],\"type\":\"correct_response\"},{\"action\":[{\"type\":\"command\",\"command\":\"play\",\"asset\":\"retry_audio\"},{\"type\":\"command\",\"command\":\"show\",\"asset\":\"retryDialog\"},{\"tween\":{\"to\":{\"ease\":\"bounceOut \",\"duration\":1500,\"__cdata\":{\"x\":20,\"y\":20,\"w\":40,\"h\":30}},\"id\":\"retryShowAnim\"},\"type\":\"animation\",\"asset\":\"retryDialog\"}],\"type\":\"wrong_response\"},{\"action\":[{\"type\":\"command\",\"command\":\"play\",\"asset\":\"goodjob_audio\"},{\"type\":\"command\",\"command\":\"show\",\"asset\":\"goodjobDialog\"},{\"tween\":{\"to\":{\"ease\":\"bounceOut\",\"duration\":1500,\"__cdata\":{\"x\":20,\"y\":20,\"w\":40,\"h\":30}},\"id\":\"gjShowAnim\"},\"type\":\"animation\",\"asset\":\"goodjobDialog\"}],\"type\":\"correct_response\"},{\"action\":{\"type\":\"command\",\"command\":\"play\",\"asset\":\"domain_10514\",\"loop\":1},\"type\":\"enter\"},{\"action\":{\"type\":\"command\",\"command\":\"stop\",\"asset\":\"domain_10514\",\"loop\":1},\"type\":\"exit\"}]},\"image\":[{\"x\":91,\"y\":15,\"w\":0,\"h\":15,\"visible\":true,\"editable\":true,\"asset\":\"validate\",\"event\":{\"action\":[{\"type\":\"command\",\"command\":\"eval\",\"asset\":\"scene7874c633-fcfb-495e-b013-be382cfa7db3\",\"success\":\"correct_response\",\"failure\":\"wrong_response\"},{\"type\":\"command\",\"command\":\"HIDEHTMLELEMENTS\",\"asset\":\"scene7874c633-fcfb-495e-b013-be382cfa7db3\"}],\"type\":\"click\"},\"z-index\":0},{\"x\":91,\"y\":15,\"w\":0,\"h\":15,\"visible\":true,\"editable\":true,\"asset\":\"validate\",\"event\":{\"action\":[{\"type\":\"command\",\"command\":\"eval\",\"asset\":\"scene7874c633-fcfb-495e-b013-be382cfa7db3\",\"success\":\"correct_response\",\"failure\":\"wrong_response\"},{\"type\":\"command\",\"command\":\"HIDEHTMLELEMENTS\",\"asset\":\"scene7874c633-fcfb-495e-b013-be382cfa7db3\"}],\"type\":\"click\"},\"z-index\":1}],\"text\":[],\"shape\":[],\"hotspot\":[],\"embed\":[],\"div\":[],\"audio\":[{\"asset\":\"domain_10514\"}],\"scribble\":[],\"htext\":[],\"g\":[{\"x\":10,\"y\":0,\"w\":80,\"h\":90,\"visible\":true,\"editable\":true,\"embed\":{\"template\":\"item\",\"var-item\":\"item\"},\"z-index\":2},{\"x\":30,\"y\":-40,\"w\":40,\"h\":48,\"visible\":false,\"editable\":true,\"embed\":{\"template-name\":\"retry\"},\"id\":\"retryDialog\",\"z-index\":3},{\"x\":30,\"y\":-40,\"w\":40,\"h\":48,\"visible\":false,\"editable\":true,\"embed\":{\"template-name\":\"goodjob\"},\"id\":\"goodjobDialog\",\"z-index\":4},{\"x\":30,\"y\":-40,\"w\":40,\"h\":48,\"visible\":false,\"editable\":true,\"embed\":{\"template-name\":\"retry\"},\"id\":\"retryDialog\",\"z-index\":5},{\"x\":30,\"y\":-40,\"w\":40,\"h\":48,\"visible\":false,\"editable\":true,\"embed\":{\"template-name\":\"goodjob\"},\"id\":\"goodjobDialog\",\"z-index\":6}],\"iterate\":\"assessment_7874c633-fcfb-495e-b013-be382cfa7db3\",\"preload\":true,\"var\":\"item\",\"appEvents\":{\"list\":\"next_item,correct_response,wrong_response,next_item,correct_response,wrong_response,next_item,correct_response,wrong_response\"}},{\"id\":\"scenee9ba0aea-5717-4e5a-82bd-331ce4e6e4bc\",\"x\":0,\"y\":0,\"w\":100,\"h\":100,\"param\":[{\"name\":\"next\",\"value\":\"scened62be57e-5339-485d-85a5-ed06367575fc\"},{\"name\":\"previous\",\"value\":\"scene7874c633-fcfb-495e-b013-be382cfa7db3\"}],\"events\":{\"event\":[{\"action\":[{\"type\":\"command\",\"command\":\"play\",\"asset\":\"retry_audio\"},{\"type\":\"command\",\"command\":\"show\",\"asset\":\"retryDialog\"},{\"tween\":{\"to\":{\"ease\":\"bounceOut \",\"duration\":1500,\"__cdata\":{\"x\":20,\"y\":20,\"w\":40,\"h\":30}},\"id\":\"retryShowAnim\"},\"type\":\"animation\",\"asset\":\"retryDialog\"}],\"type\":\"wrong_response\"},{\"action\":[{\"type\":\"command\",\"command\":\"play\",\"asset\":\"goodjob_audio\"},{\"type\":\"command\",\"command\":\"show\",\"asset\":\"goodjobDialog\"},{\"tween\":{\"to\":{\"ease\":\"bounceOut\",\"duration\":1500,\"__cdata\":{\"x\":20,\"y\":20,\"w\":40,\"h\":30}},\"id\":\"gjShowAnim\"},\"type\":\"animation\",\"asset\":\"goodjobDialog\"}],\"type\":\"correct_response\"},{\"action\":[{\"type\":\"command\",\"command\":\"play\",\"asset\":\"retry_audio\"},{\"type\":\"command\",\"command\":\"show\",\"asset\":\"retryDialog\"},{\"tween\":{\"to\":{\"ease\":\"bounceOut \",\"duration\":1500,\"__cdata\":{\"x\":20,\"y\":20,\"w\":40,\"h\":30}},\"id\":\"retryShowAnim\"},\"type\":\"animation\",\"asset\":\"retryDialog\"}],\"type\":\"wrong_response\"},{\"action\":[{\"type\":\"command\",\"command\":\"play\",\"asset\":\"goodjob_audio\"},{\"type\":\"command\",\"command\":\"show\",\"asset\":\"goodjobDialog\"},{\"tween\":{\"to\":{\"ease\":\"bounceOut\",\"duration\":1500,\"__cdata\":{\"x\":20,\"y\":20,\"w\":40,\"h\":30}},\"id\":\"gjShowAnim\"},\"type\":\"animation\",\"asset\":\"goodjobDialog\"}],\"type\":\"correct_response\"},{\"action\":{\"type\":\"command\",\"command\":\"play\",\"asset\":\"domain_10514\",\"loop\":1},\"type\":\"enter\"},{\"action\":{\"type\":\"command\",\"command\":\"stop\",\"asset\":\"domain_10514\",\"loop\":1},\"type\":\"exit\"}]},\"image\":[{\"x\":91,\"y\":15,\"w\":0,\"h\":15,\"visible\":true,\"editable\":true,\"asset\":\"validate\",\"event\":{\"action\":[{\"type\":\"command\",\"command\":\"eval\",\"asset\":\"scenee9ba0aea-5717-4e5a-82bd-331ce4e6e4bc\",\"success\":\"correct_response\",\"failure\":\"wrong_response\"},{\"type\":\"command\",\"command\":\"HIDEHTMLELEMENTS\",\"asset\":\"scenee9ba0aea-5717-4e5a-82bd-331ce4e6e4bc\"}],\"type\":\"click\"},\"z-index\":0},{\"x\":91,\"y\":15,\"w\":0,\"h\":15,\"visible\":true,\"editable\":true,\"asset\":\"validate\",\"event\":{\"action\":[{\"type\":\"command\",\"command\":\"eval\",\"asset\":\"scenee9ba0aea-5717-4e5a-82bd-331ce4e6e4bc\",\"success\":\"correct_response\",\"failure\":\"wrong_response\"},{\"type\":\"command\",\"command\":\"HIDEHTMLELEMENTS\",\"asset\":\"scenee9ba0aea-5717-4e5a-82bd-331ce4e6e4bc\"}],\"type\":\"click\"},\"z-index\":1}],\"text\":[],\"shape\":[],\"hotspot\":[],\"embed\":[],\"div\":[],\"audio\":[{\"asset\":\"domain_10514\"}],\"scribble\":[],\"htext\":[],\"g\":[{\"x\":10,\"y\":0,\"w\":80,\"h\":90,\"visible\":true,\"editable\":true,\"embed\":{\"template\":\"item\",\"var-item\":\"item\"},\"z-index\":2},{\"x\":30,\"y\":-40,\"w\":40,\"h\":48,\"visible\":false,\"editable\":true,\"embed\":{\"template-name\":\"retry\"},\"id\":\"retryDialog\",\"z-index\":3},{\"x\":30,\"y\":-40,\"w\":40,\"h\":48,\"visible\":false,\"editable\":true,\"embed\":{\"template-name\":\"goodjob\"},\"id\":\"goodjobDialog\",\"z-index\":4},{\"x\":30,\"y\":-40,\"w\":40,\"h\":48,\"visible\":false,\"editable\":true,\"embed\":{\"template-name\":\"retry\"},\"id\":\"retryDialog\",\"z-index\":5},{\"x\":30,\"y\":-40,\"w\":40,\"h\":48,\"visible\":false,\"editable\":true,\"embed\":{\"template-name\":\"goodjob\"},\"id\":\"goodjobDialog\",\"z-index\":6}],\"iterate\":\"assessment_e9ba0aea-5717-4e5a-82bd-331ce4e6e4bc\",\"preload\":true,\"var\":\"item\",\"appEvents\":{\"list\":\"next_item,correct_response,wrong_response,next_item,correct_response,wrong_response,next_item,correct_response,wrong_response\"}},{\"id\":\"scened62be57e-5339-485d-85a5-ed06367575fc\",\"x\":0,\"y\":0,\"w\":100,\"h\":100,\"param\":[{\"name\":\"next\",\"value\":\"scenecf6ddd09-764f-4611-9ab5-82ae8a124ed7\"},{\"name\":\"previous\",\"value\":\"scenee9ba0aea-5717-4e5a-82bd-331ce4e6e4bc\"}],\"events\":{\"event\":[{\"action\":[{\"type\":\"command\",\"command\":\"play\",\"asset\":\"retry_audio\"},{\"type\":\"command\",\"command\":\"show\",\"asset\":\"retryDialog\"},{\"tween\":{\"to\":{\"ease\":\"bounceOut \",\"duration\":1500,\"__cdata\":{\"x\":20,\"y\":20,\"w\":40,\"h\":30}},\"id\":\"retryShowAnim\"},\"type\":\"animation\",\"asset\":\"retryDialog\"}],\"type\":\"wrong_response\"},{\"action\":[{\"type\":\"command\",\"command\":\"play\",\"asset\":\"goodjob_audio\"},{\"type\":\"command\",\"command\":\"show\",\"asset\":\"goodjobDialog\"},{\"tween\":{\"to\":{\"ease\":\"bounceOut\",\"duration\":1500,\"__cdata\":{\"x\":20,\"y\":20,\"w\":40,\"h\":30}},\"id\":\"gjShowAnim\"},\"type\":\"animation\",\"asset\":\"goodjobDialog\"}],\"type\":\"correct_response\"},{\"action\":[{\"type\":\"command\",\"command\":\"play\",\"asset\":\"retry_audio\"},{\"type\":\"command\",\"command\":\"show\",\"asset\":\"retryDialog\"},{\"tween\":{\"to\":{\"ease\":\"bounceOut \",\"duration\":1500,\"__cdata\":{\"x\":20,\"y\":20,\"w\":40,\"h\":30}},\"id\":\"retryShowAnim\"},\"type\":\"animation\",\"asset\":\"retryDialog\"}],\"type\":\"wrong_response\"},{\"action\":[{\"type\":\"command\",\"command\":\"play\",\"asset\":\"goodjob_audio\"},{\"type\":\"command\",\"command\":\"show\",\"asset\":\"goodjobDialog\"},{\"tween\":{\"to\":{\"ease\":\"bounceOut\",\"duration\":1500,\"__cdata\":{\"x\":20,\"y\":20,\"w\":40,\"h\":30}},\"id\":\"gjShowAnim\"},\"type\":\"animation\",\"asset\":\"goodjobDialog\"}],\"type\":\"correct_response\"},{\"action\":{\"type\":\"command\",\"command\":\"play\",\"asset\":\"domain_8204\",\"loop\":1},\"type\":\"enter\"},{\"action\":{\"type\":\"command\",\"command\":\"stop\",\"asset\":\"domain_8204\",\"loop\":1},\"type\":\"exit\"}]},\"image\":[{\"x\":91,\"y\":15,\"w\":0,\"h\":15,\"visible\":true,\"editable\":true,\"asset\":\"validate\",\"event\":{\"action\":[{\"type\":\"command\",\"command\":\"eval\",\"asset\":\"scened62be57e-5339-485d-85a5-ed06367575fc\",\"success\":\"correct_response\",\"failure\":\"wrong_response\"},{\"type\":\"command\",\"command\":\"HIDEHTMLELEMENTS\",\"asset\":\"scened62be57e-5339-485d-85a5-ed06367575fc\"}],\"type\":\"click\"},\"z-index\":0},{\"x\":91,\"y\":15,\"w\":0,\"h\":15,\"visible\":true,\"editable\":true,\"asset\":\"validate\",\"event\":{\"action\":[{\"type\":\"command\",\"command\":\"eval\",\"asset\":\"scened62be57e-5339-485d-85a5-ed06367575fc\",\"success\":\"correct_response\",\"failure\":\"wrong_response\"},{\"type\":\"command\",\"command\":\"HIDEHTMLELEMENTS\",\"asset\":\"scened62be57e-5339-485d-85a5-ed06367575fc\"}],\"type\":\"click\"},\"z-index\":1}],\"text\":[],\"shape\":[],\"hotspot\":[],\"embed\":[],\"div\":[],\"audio\":[{\"asset\":\"domain_8204\"}],\"scribble\":[],\"htext\":[],\"g\":[{\"x\":10,\"y\":0,\"w\":80,\"h\":90,\"visible\":true,\"editable\":true,\"embed\":{\"template\":\"item\",\"var-item\":\"item\"},\"z-index\":2},{\"x\":30,\"y\":-40,\"w\":40,\"h\":48,\"visible\":false,\"editable\":true,\"embed\":{\"template-name\":\"retry\"},\"id\":\"retryDialog\",\"z-index\":3},{\"x\":30,\"y\":-40,\"w\":40,\"h\":48,\"visible\":false,\"editable\":true,\"embed\":{\"template-name\":\"goodjob\"},\"id\":\"goodjobDialog\",\"z-index\":4},{\"x\":30,\"y\":-40,\"w\":40,\"h\":48,\"visible\":false,\"editable\":true,\"embed\":{\"template-name\":\"retry\"},\"id\":\"retryDialog\",\"z-index\":5},{\"x\":30,\"y\":-40,\"w\":40,\"h\":48,\"visible\":false,\"editable\":true,\"embed\":{\"template-name\":\"goodjob\"},\"id\":\"goodjobDialog\",\"z-index\":6}],\"iterate\":\"assessment_d62be57e-5339-485d-85a5-ed06367575fc\",\"preload\":true,\"var\":\"item\",\"appEvents\":{\"list\":\"next_item,correct_response,wrong_response,next_item,correct_response,wrong_response,next_item,correct_response,wrong_response\"}},{\"id\":\"scenecf6ddd09-764f-4611-9ab5-82ae8a124ed7\",\"x\":0,\"y\":0,\"w\":100,\"h\":100,\"param\":[{\"name\":\"next\",\"value\":\"scene4fc1b50e-2577-49dc-bba0-aef91a16c6a9\"},{\"name\":\"previous\",\"value\":\"scened62be57e-5339-485d-85a5-ed06367575fc\"}],\"events\":{\"event\":[{\"action\":[{\"type\":\"command\",\"command\":\"play\",\"asset\":\"retry_audio\"},{\"type\":\"command\",\"command\":\"show\",\"asset\":\"retryDialog\"},{\"tween\":{\"to\":{\"ease\":\"bounceOut \",\"duration\":1500,\"__cdata\":{\"x\":20,\"y\":20,\"w\":40,\"h\":30}},\"id\":\"retryShowAnim\"},\"type\":\"animation\",\"asset\":\"retryDialog\"}],\"type\":\"wrong_response\"},{\"action\":[{\"type\":\"command\",\"command\":\"play\",\"asset\":\"goodjob_audio\"},{\"type\":\"command\",\"command\":\"show\",\"asset\":\"goodjobDialog\"},{\"tween\":{\"to\":{\"ease\":\"bounceOut\",\"duration\":1500,\"__cdata\":{\"x\":20,\"y\":20,\"w\":40,\"h\":30}},\"id\":\"gjShowAnim\"},\"type\":\"animation\",\"asset\":\"goodjobDialog\"}],\"type\":\"correct_response\"},{\"action\":[{\"type\":\"command\",\"command\":\"play\",\"asset\":\"retry_audio\"},{\"type\":\"command\",\"command\":\"show\",\"asset\":\"retryDialog\"},{\"tween\":{\"to\":{\"ease\":\"bounceOut \",\"duration\":1500,\"__cdata\":{\"x\":20,\"y\":20,\"w\":40,\"h\":30}},\"id\":\"retryShowAnim\"},\"type\":\"animation\",\"asset\":\"retryDialog\"}],\"type\":\"wrong_response\"},{\"action\":[{\"type\":\"command\",\"command\":\"play\",\"asset\":\"goodjob_audio\"},{\"type\":\"command\",\"command\":\"show\",\"asset\":\"goodjobDialog\"},{\"tween\":{\"to\":{\"ease\":\"bounceOut\",\"duration\":1500,\"__cdata\":{\"x\":20,\"y\":20,\"w\":40,\"h\":30}},\"id\":\"gjShowAnim\"},\"type\":\"animation\",\"asset\":\"goodjobDialog\"}],\"type\":\"correct_response\"},{\"action\":{\"type\":\"command\",\"command\":\"play\",\"asset\":\"domain_8210\",\"loop\":1},\"type\":\"enter\"},{\"action\":{\"type\":\"command\",\"command\":\"stop\",\"asset\":\"domain_8210\",\"loop\":1},\"type\":\"exit\"}]},\"image\":[{\"x\":91,\"y\":15,\"w\":0,\"h\":15,\"visible\":true,\"editable\":true,\"asset\":\"validate\",\"event\":{\"action\":[{\"type\":\"command\",\"command\":\"eval\",\"asset\":\"scenecf6ddd09-764f-4611-9ab5-82ae8a124ed7\",\"success\":\"correct_response\",\"failure\":\"wrong_response\"},{\"type\":\"command\",\"command\":\"HIDEHTMLELEMENTS\",\"asset\":\"scenecf6ddd09-764f-4611-9ab5-82ae8a124ed7\"}],\"type\":\"click\"},\"z-index\":0},{\"x\":91,\"y\":15,\"w\":0,\"h\":15,\"visible\":true,\"editable\":true,\"asset\":\"validate\",\"event\":{\"action\":[{\"type\":\"command\",\"command\":\"eval\",\"asset\":\"scenecf6ddd09-764f-4611-9ab5-82ae8a124ed7\",\"success\":\"correct_response\",\"failure\":\"wrong_response\"},{\"type\":\"command\",\"command\":\"HIDEHTMLELEMENTS\",\"asset\":\"scenecf6ddd09-764f-4611-9ab5-82ae8a124ed7\"}],\"type\":\"click\"},\"z-index\":1}],\"text\":[],\"shape\":[],\"hotspot\":[],\"embed\":[],\"div\":[],\"audio\":[{\"asset\":\"domain_8210\"}],\"scribble\":[],\"htext\":[],\"g\":[{\"x\":10,\"y\":0,\"w\":80,\"h\":90,\"visible\":true,\"editable\":true,\"embed\":{\"template\":\"item\",\"var-item\":\"item\"},\"z-index\":2},{\"x\":30,\"y\":-40,\"w\":40,\"h\":48,\"visible\":false,\"editable\":true,\"embed\":{\"template-name\":\"retry\"},\"id\":\"retryDialog\",\"z-index\":3},{\"x\":30,\"y\":-40,\"w\":40,\"h\":48,\"visible\":false,\"editable\":true,\"embed\":{\"template-name\":\"goodjob\"},\"id\":\"goodjobDialog\",\"z-index\":4},{\"x\":30,\"y\":-40,\"w\":40,\"h\":48,\"visible\":false,\"editable\":true,\"embed\":{\"template-name\":\"retry\"},\"id\":\"retryDialog\",\"z-index\":5},{\"x\":30,\"y\":-40,\"w\":40,\"h\":48,\"visible\":false,\"editable\":true,\"embed\":{\"template-name\":\"goodjob\"},\"id\":\"goodjobDialog\",\"z-index\":6}],\"iterate\":\"assessment_cf6ddd09-764f-4611-9ab5-82ae8a124ed7\",\"preload\":true,\"var\":\"item\",\"appEvents\":{\"list\":\"next_item,correct_response,wrong_response,next_item,correct_response,wrong_response,next_item,correct_response,wrong_response\"}},{\"id\":\"scene4fc1b50e-2577-49dc-bba0-aef91a16c6a9\",\"x\":0,\"y\":0,\"w\":100,\"h\":100,\"param\":[{\"name\":\"next\",\"value\":\"endScreen\"},{\"name\":\"previous\",\"value\":\"scenecf6ddd09-764f-4611-9ab5-82ae8a124ed7\"}],\"events\":{\"event\":[{\"action\":[{\"type\":\"command\",\"command\":\"play\",\"asset\":\"retry_audio\"},{\"type\":\"command\",\"command\":\"show\",\"asset\":\"retryDialog\"},{\"tween\":{\"to\":{\"ease\":\"bounceOut \",\"duration\":1500,\"__cdata\":{\"x\":20,\"y\":20,\"w\":40,\"h\":30}},\"id\":\"retryShowAnim\"},\"type\":\"animation\",\"asset\":\"retryDialog\"}],\"type\":\"wrong_response\"},{\"action\":[{\"type\":\"command\",\"command\":\"play\",\"asset\":\"goodjob_audio\"},{\"type\":\"command\",\"command\":\"show\",\"asset\":\"goodjobDialog\"},{\"tween\":{\"to\":{\"ease\":\"bounceOut\",\"duration\":1500,\"__cdata\":{\"x\":20,\"y\":20,\"w\":40,\"h\":30}},\"id\":\"gjShowAnim\"},\"type\":\"animation\",\"asset\":\"goodjobDialog\"}],\"type\":\"correct_response\"},{\"action\":[{\"type\":\"command\",\"command\":\"play\",\"asset\":\"retry_audio\"},{\"type\":\"command\",\"command\":\"show\",\"asset\":\"retryDialog\"},{\"tween\":{\"to\":{\"ease\":\"bounceOut \",\"duration\":1500,\"__cdata\":{\"x\":20,\"y\":20,\"w\":40,\"h\":30}},\"id\":\"retryShowAnim\"},\"type\":\"animation\",\"asset\":\"retryDialog\"}],\"type\":\"wrong_response\"},{\"action\":[{\"type\":\"command\",\"command\":\"play\",\"asset\":\"goodjob_audio\"},{\"type\":\"command\",\"command\":\"show\",\"asset\":\"goodjobDialog\"},{\"tween\":{\"to\":{\"ease\":\"bounceOut\",\"duration\":1500,\"__cdata\":{\"x\":20,\"y\":20,\"w\":40,\"h\":30}},\"id\":\"gjShowAnim\"},\"type\":\"animation\",\"asset\":\"goodjobDialog\"}],\"type\":\"correct_response\"},{\"action\":{\"type\":\"command\",\"command\":\"play\",\"asset\":\"do_30019709\",\"loop\":1},\"type\":\"enter\"},{\"action\":{\"type\":\"command\",\"command\":\"stop\",\"asset\":\"do_30019709\",\"loop\":1},\"type\":\"exit\"}]},\"image\":[{\"x\":91,\"y\":15,\"w\":0,\"h\":15,\"visible\":true,\"editable\":true,\"asset\":\"validate\",\"event\":{\"action\":[{\"type\":\"command\",\"command\":\"eval\",\"asset\":\"scene4fc1b50e-2577-49dc-bba0-aef91a16c6a9\",\"success\":\"correct_response\",\"failure\":\"wrong_response\"},{\"type\":\"command\",\"command\":\"HIDEHTMLELEMENTS\",\"asset\":\"scene4fc1b50e-2577-49dc-bba0-aef91a16c6a9\"}],\"type\":\"click\"},\"z-index\":0},{\"x\":91,\"y\":15,\"w\":0,\"h\":15,\"visible\":true,\"editable\":true,\"asset\":\"validate\",\"event\":{\"action\":[{\"type\":\"command\",\"command\":\"eval\",\"asset\":\"scene4fc1b50e-2577-49dc-bba0-aef91a16c6a9\",\"success\":\"correct_response\",\"failure\":\"wrong_response\"},{\"type\":\"command\",\"command\":\"HIDEHTMLELEMENTS\",\"asset\":\"scene4fc1b50e-2577-49dc-bba0-aef91a16c6a9\"}],\"type\":\"click\"},\"z-index\":1}],\"text\":[],\"shape\":[],\"hotspot\":[],\"embed\":[],\"div\":[],\"audio\":[{\"asset\":\"do_30019709\"}],\"scribble\":[],\"htext\":[],\"g\":[{\"x\":10,\"y\":0,\"w\":80,\"h\":90,\"visible\":true,\"editable\":true,\"embed\":{\"template\":\"item\",\"var-item\":\"item\"},\"z-index\":2},{\"x\":30,\"y\":-40,\"w\":40,\"h\":48,\"visible\":false,\"editable\":true,\"embed\":{\"template-name\":\"retry\"},\"id\":\"retryDialog\",\"z-index\":3},{\"x\":30,\"y\":-40,\"w\":40,\"h\":48,\"visible\":false,\"editable\":true,\"embed\":{\"template-name\":\"goodjob\"},\"id\":\"goodjobDialog\",\"z-index\":4},{\"x\":30,\"y\":-40,\"w\":40,\"h\":48,\"visible\":false,\"editable\":true,\"embed\":{\"template-name\":\"retry\"},\"id\":\"retryDialog\",\"z-index\":5},{\"x\":30,\"y\":-40,\"w\":40,\"h\":48,\"visible\":false,\"editable\":true,\"embed\":{\"template-name\":\"goodjob\"},\"id\":\"goodjobDialog\",\"z-index\":6}],\"iterate\":\"assessment_4fc1b50e-2577-49dc-bba0-aef91a16c6a9\",\"preload\":true,\"var\":\"item\",\"appEvents\":{\"list\":\"next_item,correct_response,wrong_response,next_item,correct_response,wrong_response,next_item,correct_response,wrong_response\"}},{\"id\":\"endScreen\",\"x\":0,\"y\":0,\"w\":100,\"h\":100,\"param\":[{\"name\":\"previousScreen\",\"value\":\"recordAudio9\"},{\"name\":\"nextScreen\",\"value\":\"splash\"},{\"name\":\"previous\",\"value\":\"scene4fc1b50e-2577-49dc-bba0-aef91a16c6a9\"}],\"events\":{\"event\":[]},\"image\":[{\"x\":0,\"y\":0,\"w\":100,\"h\":100,\"visible\":true,\"editable\":true,\"asset\":\"endScreen\",\"z-index\":0},{\"x\":40,\"y\":50,\"w\":8,\"h\":13,\"visible\":true,\"editable\":true,\"asset\":\"previous\",\"event\":{\"action\":{\"asset\":\"theme\",\"command\":\"transitionTo\",\"direction\":\"right\",\"duration\":600,\"ease\":\"linear\",\"effect\":\"scroll\",\"param\":\"previousScreen\",\"type\":\"command\"},\"type\":\"click\"},\"z-index\":1},{\"x\":50,\"y\":50,\"w\":8,\"h\":13,\"visible\":true,\"editable\":true,\"asset\":\"next\",\"event\":{\"action\":{\"asset\":\"theme\",\"command\":\"transitionTo\",\"direction\":\"right\",\"duration\":600,\"ease\":\"linear\",\"effect\":\"scroll\",\"param\":\"nextScreen\",\"type\":\"command\"},\"type\":\"click\"},\"z-index\":2}],\"text\":[],\"shape\":[],\"hotspot\":[],\"embed\":[],\"div\":[],\"audio\":[],\"scribble\":[],\"htext\":[],\"g\":[]}]}}"
}
```

Please refer [user task workflow](/learn/product-and-developer-guide/player/v1/players/ecml-player-v1/create-content) section for more information

## **Features**

### **Online play**

You can play the assets online by using the *streamingUrl* and data object

#### Streaming url:&#x20;

ECML player v1 can be play using the streamingUrl and you can renderer the assets without downloading it

Sample config metadata of streaming url:

```
"metadata": {
    "mimeType": "application/vnd.ekstep.ecml-archive",
    "primaryCategory": "Learning Resource",
    identifier: "do_213371885833453568175",
    "mediaType": "content",
    "streamingUrl": "https://sunbirdstagingpublic.blob.core.windows.net/sunbird-content-staging/content/ecml/do_213371885833453568175-latest",
}
```

#### Data object:

By passing the the body of the ECML assets the assets can be rederer in ecml player. This body property is available in content read API which is available in[ content service](/learn/product-and-developer-guide/content-service).

Sample config of data:

```
{
    "context": {}, //context object
    "config": {}, // Config object
    "metadata": {}, //content metadata json object (from API response take -> response.result.content)
    "data": {\"theme\":{\"id\":\"theme\",\"version\":\"1.0\",\"startStage\":\"c797dd75-8d8e-440b-adcd-47c0d54cc61d\",\"stage\":[{\"x\":0,\"y\":0,\"w\":100,\"h\":100,\"id\":\"c797dd75-8d8e-440b-adcd-47c0d54cc61d\",\"rotate\":null,\"config\":{\"__cdata\":\"{\\\"opacity\\\":100,\\\"strokeWidth\\\":1,\\\"stroke\\\":\\\"rgba(255, 255, 255, 0)\\\",\\\"autoplay\\\":false,\\\"visible\\\":true,\\\"color\\\":\\\"#FFFFFF\\\",\\\"genieControls\\\":false,\\\"instructions\\\":\\\"\\\"}\"},\"manifest\":{\"media\":[]},\"org.ekstep.questionset\":[{\"x\":9,\"y\":6,\"w\":80,\"h\":85,\"rotate\":0,\"z-index\":0,\"id\":\"689de291-52ea-4748-a7de-92b02223036b\",\"data\":{\"__cdata\":\"[{\\\"code\\\":\\\"NA\\\",\\\"isShuffleOption\\\":false,\\\"body\\\":\\\"{\\\\\\\"data\\\\\\\":{\\\\\\\"plugin\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"org.ekstep.questionunit.sequence\\\\\\\",\\\\\\\"version\\\\\\\":\\\\\\\"1.1\\\\\\\",\\\\\\\"templateId\\\\\\\":\\\\\\\"sequenceTemplate\\\\\\\"},\\\\\\\"data\\\\\\\":{\\\\\\\"question\\\\\\\":{\\\\\\\"text\\\\\\\":\\\\\\\"<p>Who is table topper of the IPL 2021?</p>\\\\\\\\n\\\\\\\",\\\\\\\"image\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"audio\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"audioName\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"hint\\\\\\\":\\\\\\\"\\\\\\\"},\\\\\\\"options\\\\\\\":[{\\\\\\\"text\\\\\\\":\\\\\\\"DC\\\\\\\",\\\\\\\"image\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"audio\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"audioName\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"hint\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"$$hashKey\\\\\\\":\\\\\\\"object:1144\\\\\\\"},{\\\\\\\"text\\\\\\\":\\\\\\\"CSK\\\\\\\",\\\\\\\"image\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"audio\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"audioName\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"hint\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"$$hashKey\\\\\\\":\\\\\\\"object:1145\\\\\\\"},{\\\\\\\"text\\\\\\\":\\\\\\\"RCB\\\\\\\",\\\\\\\"image\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"audio\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"audioName\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"hint\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"$$hashKey\\\\\\\":\\\\\\\"object:1155\\\\\\\"},{\\\\\\\"text\\\\\\\":\\\\\\\"MI\\\\\\\",\\\\\\\"image\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"audio\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"audioName\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"hint\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"$$hashKey\\\\\\\":\\\\\\\"object:1160\\\\\\\"}],\\\\\\\"media\\\\\\\":[]},\\\\\\\"config\\\\\\\":{\\\\\\\"metadata\\\\\\\":{\\\\\\\"max_score\\\\\\\":1,\\\\\\\"isShuffleOption\\\\\\\":false,\\\\\\\"isPartialScore\\\\\\\":true,\\\\\\\"evalUnordered\\\\\\\":false,\\\\\\\"templateType\\\\\\\":\\\\\\\"Horizontal\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Who is table topper of the IPL 2021?\\\\\\\\n\\\\\\\",\\\\\\\"title\\\\\\\":\\\\\\\"Who is table topper of the IPL 2021?\\\\\\\\n\\\\\\\",\\\\\\\"copyright\\\\\\\":\\\\\\\"Tamil Nadu\\\\\\\",\\\\\\\"board\\\\\\\":\\\\\\\"State (Tamil Nadu)\\\\\\\",\\\\\\\"topic\\\\\\\":[],\\\\\\\"medium\\\\\\\":\\\\\\\"English\\\\\\\",\\\\\\\"gradeLevel\\\\\\\":[\\\\\\\"Class 1\\\\\\\"],\\\\\\\"subject\\\\\\\":\\\\\\\"Skills\\\\\\\",\\\\\\\"qlevel\\\\\\\":\\\\\\\"MEDIUM\\\\\\\",\\\\\\\"category\\\\\\\":\\\\\\\"mcq\\\\\\\"},\\\\\\\"max_time\\\\\\\":0,\\\\\\\"max_score\\\\\\\":1,\\\\\\\"partial_scoring\\\\\\\":true,\\\\\\\"layout\\\\\\\":\\\\\\\"Horizontal\\\\\\\",\\\\\\\"isShuffleOption\\\\\\\":false,\\\\\\\"questionCount\\\\\\\":1,\\\\\\\"evalUnordered\\\\\\\":false},\\\\\\\"media\\\\\\\":[]}}\\\",\\\"itemType\\\":\\\"UNIT\\\",\\\"version\\\":2,\\\"category\\\":\\\"mcq\\\",\\\"createdBy\\\":\\\"4cd4c690-eab6-4938-855a-447c7b1b8ea9\\\",\\\"channel\\\":\\\"01269878797503692810\\\",\\\"type\\\":\\\"mcq\\\",\\\"template\\\":\\\"NA\\\",\\\"template_id\\\":\\\"NA\\\",\\\"framework\\\":\\\"tn_k-12_5\\\",\\\"max_score\\\":1,\\\"isPartialScore\\\":true,\\\"evalUnordered\\\":false,\\\"templateType\\\":\\\"Horizontal\\\",\\\"name\\\":\\\"Who is table topper of the IPL 2021?\\\\n\\\",\\\"title\\\":\\\"Who is table topper of the IPL 2021?\\\\n\\\",\\\"copyright\\\":\\\"Tamil Nadu\\\",\\\"board\\\":\\\"State (Tamil Nadu)\\\",\\\"topic\\\":[],\\\"medium\\\":\\\"English\\\",\\\"gradeLevel\\\":[\\\"Class 1\\\"],\\\"subject\\\":\\\"Skills\\\",\\\"qlevel\\\":\\\"MEDIUM\\\",\\\"options\\\":[{\\\"answer\\\":true,\\\"value\\\":{\\\"type\\\":\\\"text\\\",\\\"asset\\\":\\\"1\\\"}}],\\\"identifier\\\":\\\"do_213371887644123136110\\\",\\\"isSelected\\\":true},{\\\"templateType\\\":\\\"Horizontal\\\",\\\"template\\\":\\\"NA\\\",\\\"copyright\\\":\\\"Tamil Nadu\\\",\\\"isPartialScore\\\":true,\\\"itemType\\\":\\\"UNIT\\\",\\\"code\\\":\\\"NA\\\",\\\"subject\\\":\\\"Skills\\\",\\\"qlevel\\\":\\\"EASY\\\",\\\"evalUnordered\\\":false,\\\"channel\\\":\\\"01269878797503692810\\\",\\\"language\\\":[\\\"English\\\"],\\\"medium\\\":\\\"English\\\",\\\"type\\\":\\\"mcq\\\",\\\"title\\\":\\\"tonight  want  to the cinema  to go  we\\\\n\\\",\\\"editorState\\\":null,\\\"body\\\":\\\"{\\\\\\\"data\\\\\\\":{\\\\\\\"plugin\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"org.ekstep.questionunit.reorder\\\\\\\",\\\\\\\"version\\\\\\\":\\\\\\\"1.1\\\\\\\",\\\\\\\"templateId\\\\\\\":\\\\\\\"reorderingtemplate\\\\\\\"},\\\\\\\"data\\\\\\\":{\\\\\\\"question\\\\\\\":{\\\\\\\"text\\\\\\\":\\\\\\\"<p>tonight &nbsp;want &nbsp;to the cinema &nbsp;to go &nbsp;we</p>\\\\\\\\n\\\\\\\"},\\\\\\\"sentence\\\\\\\":{\\\\\\\"text\\\\\\\":\\\\\\\"we want to go to the cinema tonight\\\\\\\",\\\\\\\"tabs\\\\\\\":[{\\\\\\\"text\\\\\\\":\\\\\\\"we\\\\\\\",\\\\\\\"id\\\\\\\":0,\\\\\\\"$$hashKey\\\\\\\":\\\\\\\"object:2601\\\\\\\"},{\\\\\\\"text\\\\\\\":\\\\\\\"want\\\\\\\",\\\\\\\"id\\\\\\\":1,\\\\\\\"$$hashKey\\\\\\\":\\\\\\\"object:2602\\\\\\\"},{\\\\\\\"text\\\\\\\":\\\\\\\"to\\\\\\\",\\\\\\\"id\\\\\\\":2,\\\\\\\"$$hashKey\\\\\\\":\\\\\\\"object:2603\\\\\\\"},{\\\\\\\"text\\\\\\\":\\\\\\\"go\\\\\\\",\\\\\\\"id\\\\\\\":3,\\\\\\\"$$hashKey\\\\\\\":\\\\\\\"object:2604\\\\\\\"},{\\\\\\\"text\\\\\\\":\\\\\\\"to\\\\\\\",\\\\\\\"id\\\\\\\":4,\\\\\\\"$$hashKey\\\\\\\":\\\\\\\"object:2605\\\\\\\"},{\\\\\\\"text\\\\\\\":\\\\\\\"the\\\\\\\",\\\\\\\"id\\\\\\\":5,\\\\\\\"$$hashKey\\\\\\\":\\\\\\\"object:2606\\\\\\\"},{\\\\\\\"text\\\\\\\":\\\\\\\"cinema\\\\\\\",\\\\\\\"id\\\\\\\":6,\\\\\\\"$$hashKey\\\\\\\":\\\\\\\"object:2607\\\\\\\"},{\\\\\\\"text\\\\\\\":\\\\\\\"tonight\\\\\\\",\\\\\\\"id\\\\\\\":7,\\\\\\\"$$hashKey\\\\\\\":\\\\\\\"object:2608\\\\\\\"}]}},\\\\\\\"config\\\\\\\":{\\\\\\\"metadata\\\\\\\":{\\\\\\\"max_score\\\\\\\":3,\\\\\\\"isShuffleOption\\\\\\\":false,\\\\\\\"isPartialScore\\\\\\\":true,\\\\\\\"evalUnordered\\\\\\\":false,\\\\\\\"templateType\\\\\\\":\\\\\\\"Horizontal\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"tonight  want  to the cinema  to go  we\\\\\\\\n\\\\\\\",\\\\\\\"title\\\\\\\":\\\\\\\"tonight  want  to the cinema  to go  we\\\\\\\\n\\\\\\\",\\\\\\\"copyright\\\\\\\":\\\\\\\"Tamil Nadu\\\\\\\",\\\\\\\"board\\\\\\\":\\\\\\\"State (Tamil Nadu)\\\\\\\",\\\\\\\"topic\\\\\\\":[],\\\\\\\"medium\\\\\\\":\\\\\\\"English\\\\\\\",\\\\\\\"gradeLevel\\\\\\\":[\\\\\\\"Class 1\\\\\\\"],\\\\\\\"subject\\\\\\\":\\\\\\\"Skills\\\\\\\",\\\\\\\"qlevel\\\\\\\":\\\\\\\"EASY\\\\\\\",\\\\\\\"category\\\\\\\":\\\\\\\"mcq\\\\\\\"},\\\\\\\"max_time\\\\\\\":0,\\\\\\\"max_score\\\\\\\":1,\\\\\\\"partial_scoring\\\\\\\":true,\\\\\\\"layout\\\\\\\":\\\\\\\"Horizontal\\\\\\\",\\\\\\\"isShuffleOption\\\\\\\":false,\\\\\\\"questionCount\\\\\\\":1,\\\\\\\"evalUnordered\\\\\\\":false}}}\\\",\\\"createdOn\\\":\\\"2021-09-22T06:21:27.983+0000\\\",\\\"gradeLevel\\\":[\\\"Class 1\\\"],\\\"isShuffleOption\\\":false,\\\"appId\\\":\\\"staging.sunbird.portal\\\",\\\"options\\\":[{\\\"answer\\\":true,\\\"value\\\":{\\\"type\\\":\\\"text\\\",\\\"asset\\\":\\\"1\\\",\\\"resvalue\\\":0,\\\"resindex\\\":0}}],\\\"lastUpdatedOn\\\":\\\"2021-09-22T06:21:27.983+0000\\\",\\\"identifier\\\":\\\"do_21337173350796492819\\\",\\\"lastStatusChangedOn\\\":\\\"2021-09-22T06:21:27.983+0000\\\",\\\"question\\\":null,\\\"solutions\\\":null,\\\"version\\\":2,\\\"versionKey\\\":\\\"1632291687983\\\",\\\"framework\\\":\\\"tn_k-12_5\\\",\\\"createdBy\\\":\\\"fca2925f-1eee-4654-9177-fece3fd6afc9\\\",\\\"max_score\\\":1,\\\"name\\\":\\\"tonight  want  to the cinema  to go  we\\\\n\\\",\\\"template_id\\\":\\\"NA\\\",\\\"category\\\":\\\"mcq\\\",\\\"board\\\":\\\"State (Tamil Nadu)\\\",\\\"status\\\":\\\"Live\\\",\\\"isSelected\\\":true},{\\\"templateType\\\":\\\"Horizontal\\\",\\\"template\\\":\\\"NA\\\",\\\"copyright\\\":\\\"diksha_ntptest_org\\\",\\\"isPartialScore\\\":true,\\\"itemType\\\":\\\"UNIT\\\",\\\"code\\\":\\\"NA\\\",\\\"subject\\\":\\\"Mathematics\\\",\\\"qlevel\\\":\\\"EASY\\\",\\\"evalUnordered\\\":false,\\\"channel\\\":\\\"01272777697873100812\\\",\\\"language\\\":[\\\"English\\\"],\\\"medium\\\":\\\"English\\\",\\\"title\\\":\\\"copy question\\\",\\\"type\\\":\\\"mcq\\\",\\\"editorState\\\":null,\\\"body\\\":\\\"{\\\\\\\"data\\\\\\\":{\\\\\\\"plugin\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"org.ekstep.questionunit.mcq\\\\\\\",\\\\\\\"version\\\\\\\":\\\\\\\"1.3\\\\\\\",\\\\\\\"templateId\\\\\\\":\\\\\\\"horizontalMCQ\\\\\\\"},\\\\\\\"data\\\\\\\":{\\\\\\\"question\\\\\\\":{\\\\\\\"text\\\\\\\":\\\\\\\"<p>India</p>\\\\\\\\n\\\\\\\",\\\\\\\"image\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"audio\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"audioName\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"hint\\\\\\\":\\\\\\\"\\\\\\\"},\\\\\\\"options\\\\\\\":[{\\\\\\\"text\\\\\\\":\\\\\\\"<p>240,200,160</p>\\\\\\\\n\\\\\\\",\\\\\\\"image\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"audio\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"audioName\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"hint\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"isCorrect\\\\\\\":true,\\\\\\\"$$hashKey\\\\\\\":\\\\\\\"object:639\\\\\\\"},{\\\\\\\"text\\\\\\\":\\\\\\\"<p>200,160,240</p>\\\\\\\\n\\\\\\\",\\\\\\\"image\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"audio\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"audioName\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"hint\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"isCorrect\\\\\\\":false,\\\\\\\"$$hashKey\\\\\\\":\\\\\\\"object:640\\\\\\\"}],\\\\\\\"questionCount\\\\\\\":0,\\\\\\\"media\\\\\\\":[]},\\\\\\\"config\\\\\\\":{\\\\\\\"metadata\\\\\\\":{\\\\\\\"data\\\\\\\":{\\\\\\\"plugin\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"org.ekstep.questionunit.mcq\\\\\\\",\\\\\\\"version\\\\\\\":\\\\\\\"1.3\\\\\\\",\\\\\\\"templateId\\\\\\\":\\\\\\\"horizontalMCQ\\\\\\\"},\\\\\\\"data\\\\\\\":{\\\\\\\"question\\\\\\\":{\\\\\\\"text\\\\\\\":\\\\\\\"<p>India</p>\\\\\\\\n\\\\\\\",\\\\\\\"image\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"audio\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"audioName\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"hint\\\\\\\":\\\\\\\"\\\\\\\"},\\\\\\\"options\\\\\\\":[{\\\\\\\"text\\\\\\\":\\\\\\\"<p>240,200,160</p>\\\\\\\\n\\\\\\\",\\\\\\\"image\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"audio\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"audioName\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"hint\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"isCorrect\\\\\\\":true,\\\\\\\"$$hashKey\\\\\\\":\\\\\\\"object:639\\\\\\\"},{\\\\\\\"text\\\\\\\":\\\\\\\"<p>200,160,240</p>\\\\\\\\n\\\\\\\",\\\\\\\"image\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"audio\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"audioName\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"hint\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"isCorrect\\\\\\\":false,\\\\\\\"$$hashKey\\\\\\\":\\\\\\\"object:640\\\\\\\"}],\\\\\\\"questionCount\\\\\\\":0,\\\\\\\"media\\\\\\\":[]},\\\\\\\"config\\\\\\\":{\\\\\\\"metadata\\\\\\\":{\\\\\\\"max_score\\\\\\\":1,\\\\\\\"isShuffleOption\\\\\\\":false,\\\\\\\"isPartialScore\\\\\\\":true,\\\\\\\"evalUnordered\\\\\\\":false,\\\\\\\"templateType\\\\\\\":\\\\\\\"Horizontal\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Question\\\\\\\",\\\\\\\"title\\\\\\\":\\\\\\\"Copy of - Question\\\\\\\",\\\\\\\"copyright\\\\\\\":\\\\\\\"diksha_ntptest_org\\\\\\\",\\\\\\\"board\\\\\\\":\\\\\\\"CBSE\\\\\\\",\\\\\\\"topic\\\\\\\":[],\\\\\\\"medium\\\\\\\":\\\\\\\"English\\\\\\\",\\\\\\\"gradeLevel\\\\\\\":[\\\\\\\"Class 1\\\\\\\"],\\\\\\\"subject\\\\\\\":\\\\\\\"Mathematics\\\\\\\",\\\\\\\"learningOutcome\\\\\\\":[\\\\\\\"हिन्दी के महीनों और अयोध्या की जानकारी प्राप्त करेंगे।\\\\\\\"],\\\\\\\"qlevel\\\\\\\":\\\\\\\"EASY\\\\\\\",\\\\\\\"category\\\\\\\":\\\\\\\"MCQ\\\\\\\",\\\\\\\"level\\\\\\\":\\\\\\\"EASY\\\\\\\"},\\\\\\\"max_time\\\\\\\":0,\\\\\\\"max_score\\\\\\\":1,\\\\\\\"partial_scoring\\\\\\\":true,\\\\\\\"layout\\\\\\\":\\\\\\\"Horizontal\\\\\\\",\\\\\\\"isShuffleOption\\\\\\\":false,\\\\\\\"questionCount\\\\\\\":1,\\\\\\\"evalUnordered\\\\\\\":false},\\\\\\\"media\\\\\\\":[]},\\\\\\\"questionTitle\\\\\\\":\\\\\\\"Copy of - Question\\\\\\\",\\\\\\\"qlevel\\\\\\\":\\\\\\\"EASY\\\\\\\",\\\\\\\"board\\\\\\\":\\\\\\\"CBSE\\\\\\\",\\\\\\\"gradeLevel\\\\\\\":[\\\\\\\"Class 1\\\\\\\"],\\\\\\\"medium\\\\\\\":\\\\\\\"English\\\\\\\",\\\\\\\"subject\\\\\\\":\\\\\\\"Mathematics\\\\\\\",\\\\\\\"learningOutcome\\\\\\\":[\\\\\\\"हिन्दी के महीनों और अयोध्या की जानकारी प्राप्त करेंगे।\\\\\\\"],\\\\\\\"templateType\\\\\\\":\\\\\\\"Horizontal\\\\\\\",\\\\\\\"isPartialScore\\\\\\\":true,\\\\\\\"isShuffleOption\\\\\\\":false,\\\\\\\"evalUnordered\\\\\\\":false,\\\\\\\"topic\\\\\\\":[],\\\\\\\"max_score\\\\\\\":1,\\\\\\\"name\\\\\\\":\\\\\\\"copy question\\\\\\\",\\\\\\\"title\\\\\\\":\\\\\\\"copy question\\\\\\\",\\\\\\\"topicData\\\\\\\":\\\\\\\"(0) topics selected\\\\\\\",\\\\\\\"copyright\\\\\\\":\\\\\\\"diksha_ntptest_org\\\\\\\",\\\\\\\"category\\\\\\\":\\\\\\\"MCQ\\\\\\\"},\\\\\\\"max_time\\\\\\\":0,\\\\\\\"max_score\\\\\\\":1,\\\\\\\"partial_scoring\\\\\\\":true,\\\\\\\"layout\\\\\\\":\\\\\\\"Horizontal\\\\\\\",\\\\\\\"isShuffleOption\\\\\\\":false,\\\\\\\"questionCount\\\\\\\":1,\\\\\\\"evalUnordered\\\\\\\":false},\\\\\\\"media\\\\\\\":[]}}\\\",\\\"createdOn\\\":\\\"2021-09-22T04:35:00.268+0000\\\",\\\"gradeLevel\\\":[\\\"Class 1\\\"],\\\"isShuffleOption\\\":false,\\\"appId\\\":\\\"staging.sunbird.portal\\\",\\\"options\\\":[{\\\"answer\\\":true,\\\"value\\\":{\\\"type\\\":\\\"text\\\",\\\"asset\\\":\\\"1\\\",\\\"resvalue\\\":0,\\\"resindex\\\":0}}],\\\"lastUpdatedOn\\\":\\\"2021-09-22T04:35:22.718+0000\\\",\\\"identifier\\\":\\\"do_213371681179803648191\\\",\\\"lastStatusChangedOn\\\":\\\"2021-09-22T04:35:00.268+0000\\\",\\\"questionTitle\\\":\\\"Copy of - Question\\\",\\\"question\\\":\\\"<p>India</p>\\\\n\\\",\\\"topicData\\\":\\\"(0) topics selected\\\",\\\"consumerId\\\":\\\"cb069f8d-e4e1-46c5-831f-d4a83b323ada\\\",\\\"solutions\\\":null,\\\"learningOutcome\\\":[\\\"हिन्दी के महीनों और अयोध्या की जानकारी प्राप्त करेंगे।\\\"],\\\"version\\\":2,\\\"versionKey\\\":\\\"1632285322718\\\",\\\"framework\\\":\\\"ekstep_ncert_k-12\\\",\\\"createdBy\\\":\\\"0ced9624-e65b-4fd0-a0d3-2f6e86dd3ef7\\\",\\\"max_score\\\":1,\\\"name\\\":\\\"copy question\\\",\\\"template_id\\\":\\\"NA\\\",\\\"category\\\":\\\"MCQ\\\",\\\"board\\\":\\\"CBSE\\\",\\\"status\\\":\\\"Live\\\",\\\"isSelected\\\":false},{\\\"template\\\":\\\"NA\\\",\\\"templateType\\\":\\\"Horizontal\\\",\\\"copyright\\\":\\\"diksha_ntptest_org\\\",\\\"isPartialScore\\\":true,\\\"itemType\\\":\\\"UNIT\\\",\\\"code\\\":\\\"NA\\\",\\\"subject\\\":\\\"Mathematics\\\",\\\"qlevel\\\":\\\"EASY\\\",\\\"evalUnordered\\\":false,\\\"channel\\\":\\\"01272777697873100812\\\",\\\"language\\\":[\\\"English\\\"],\\\"medium\\\":\\\"English\\\",\\\"title\\\":\\\"Question\\\",\\\"type\\\":\\\"mtf\\\",\\\"editorState\\\":null,\\\"body\\\":\\\"{\\\\\\\"data\\\\\\\":{\\\\\\\"plugin\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"org.ekstep.questionunit.mtf\\\\\\\",\\\\\\\"version\\\\\\\":\\\\\\\"1.2\\\\\\\",\\\\\\\"templateId\\\\\\\":\\\\\\\"horizontalMTF\\\\\\\"},\\\\\\\"data\\\\\\\":{\\\\\\\"question\\\\\\\":{\\\\\\\"text\\\\\\\":\\\\\\\"<p>Question</p>\\\\\\\\n\\\\\\\",\\\\\\\"image\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"audio\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"audioName\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"hint\\\\\\\":\\\\\\\"\\\\\\\"},\\\\\\\"option\\\\\\\":{\\\\\\\"optionsLHS\\\\\\\":[{\\\\\\\"text\\\\\\\":\\\\\\\"<p>animal</p>\\\\\\\\n\\\\\\\",\\\\\\\"image\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"audio\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"audioName\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"hint\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"index\\\\\\\":1,\\\\\\\"$$hashKey\\\\\\\":\\\\\\\"object:639\\\\\\\"},{\\\\\\\"text\\\\\\\":\\\\\\\"<p>bird</p>\\\\\\\\n\\\\\\\",\\\\\\\"image\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"audio\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"audioName\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"hint\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"index\\\\\\\":2,\\\\\\\"$$hashKey\\\\\\\":\\\\\\\"object:640\\\\\\\"},{\\\\\\\"text\\\\\\\":\\\\\\\"<p>mammal</p>\\\\\\\\n\\\\\\\",\\\\\\\"image\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"audio\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"audioName\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"hint\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"index\\\\\\\":3,\\\\\\\"$$hashKey\\\\\\\":\\\\\\\"object:641\\\\\\\"}],\\\\\\\"optionsRHS\\\\\\\":[{\\\\\\\"text\\\\\\\":\\\\\\\"<p>dog</p>\\\\\\\\n\\\\\\\",\\\\\\\"image\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"audio\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"audioName\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"hint\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"mapIndex\\\\\\\":1},{\\\\\\\"text\\\\\\\":\\\\\\\"<p>peacock</p>\\\\\\\\n\\\\\\\",\\\\\\\"image\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"audio\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"audioName\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"hint\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"mapIndex\\\\\\\":2},{\\\\\\\"text\\\\\\\":\\\\\\\"<p>human</p>\\\\\\\\n\\\\\\\",\\\\\\\"image\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"audio\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"audioName\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"hint\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"mapIndex\\\\\\\":3}],\\\\\\\"questionCount\\\\\\\":0},\\\\\\\"media\\\\\\\":[]},\\\\\\\"config\\\\\\\":{\\\\\\\"metadata\\\\\\\":{\\\\\\\"max_score\\\\\\\":1,\\\\\\\"isShuffleOption\\\\\\\":false,\\\\\\\"isPartialScore\\\\\\\":true,\\\\\\\"evalUnordered\\\\\\\":false,\\\\\\\"templateType\\\\\\\":\\\\\\\"Horizontal\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Question\\\\\\\",\\\\\\\"title\\\\\\\":\\\\\\\"Question\\\\\\\",\\\\\\\"copyright\\\\\\\":\\\\\\\"diksha_ntptest_org\\\\\\\",\\\\\\\"board\\\\\\\":\\\\\\\"CBSE\\\\\\\",\\\\\\\"topic\\\\\\\":[],\\\\\\\"medium\\\\\\\":\\\\\\\"English\\\\\\\",\\\\\\\"gradeLevel\\\\\\\":[\\\\\\\"Class 1\\\\\\\"],\\\\\\\"subject\\\\\\\":\\\\\\\"Mathematics\\\\\\\",\\\\\\\"learningOutcome\\\\\\\":[\\\\\\\"हिन्दी के महीनों और अयोध्या की जानकारी प्राप्त करेंगे।\\\\\\\"],\\\\\\\"qlevel\\\\\\\":\\\\\\\"EASY\\\\\\\",\\\\\\\"category\\\\\\\":\\\\\\\"MTF\\\\\\\"},\\\\\\\"max_time\\\\\\\":0,\\\\\\\"max_score\\\\\\\":1,\\\\\\\"partial_scoring\\\\\\\":true,\\\\\\\"layout\\\\\\\":\\\\\\\"Horizontal\\\\\\\",\\\\\\\"isShuffleOption\\\\\\\":false,\\\\\\\"questionCount\\\\\\\":1,\\\\\\\"evalUnordered\\\\\\\":false},\\\\\\\"media\\\\\\\":[]}}\\\",\\\"createdOn\\\":\\\"2021-09-22T02:51:07.246+0000\\\",\\\"gradeLevel\\\":[\\\"Class 1\\\"],\\\"isShuffleOption\\\":false,\\\"appId\\\":\\\"staging.sunbird.portal\\\",\\\"lastUpdatedOn\\\":\\\"2021-09-22T02:51:07.246+0000\\\",\\\"rhs_options\\\":[{\\\"value\\\":{\\\"type\\\":\\\"mixed\\\",\\\"text\\\":\\\"इक\\\",\\\"image\\\":\\\"\\\",\\\"count\\\":\\\"\\\",\\\"audio\\\":\\\"\\\",\\\"resvalue\\\":\\\"इक\\\",\\\"resindex\\\":0},\\\"index\\\":0}],\\\"identifier\\\":\\\"do_213371630118879232189\\\",\\\"lastStatusChangedOn\\\":\\\"2021-09-22T02:51:07.246+0000\\\",\\\"question\\\":null,\\\"consumerId\\\":\\\"cb069f8d-e4e1-46c5-831f-d4a83b323ada\\\",\\\"solutions\\\":null,\\\"learningOutcome\\\":[\\\"हिन्दी के महीनों और अयोध्या की जानकारी प्राप्त करेंगे।\\\"],\\\"version\\\":2,\\\"versionKey\\\":\\\"1632279067246\\\",\\\"lhs_options\\\":[{\\\"value\\\":{\\\"type\\\":\\\"mixed\\\",\\\"text\\\":\\\"इक\\\",\\\"image\\\":\\\"\\\",\\\"count\\\":\\\"\\\",\\\"audio\\\":\\\"\\\",\\\"resvalue\\\":\\\"इक\\\",\\\"resindex\\\":0},\\\"index\\\":0}],\\\"framework\\\":\\\"ekstep_ncert_k-12\\\",\\\"createdBy\\\":\\\"0ced9624-e65b-4fd0-a0d3-2f6e86dd3ef7\\\",\\\"max_score\\\":1,\\\"name\\\":\\\"Question\\\",\\\"template_id\\\":\\\"NA\\\",\\\"category\\\":\\\"MTF\\\",\\\"board\\\":\\\"CBSE\\\",\\\"status\\\":\\\"Live\\\",\\\"isSelected\\\":false},{\\\"templateType\\\":\\\"Horizontal\\\",\\\"template\\\":\\\"NA\\\",\\\"copyright\\\":\\\"diksha_ntptest_org\\\",\\\"isPartialScore\\\":true,\\\"itemType\\\":\\\"UNIT\\\",\\\"code\\\":\\\"NA\\\",\\\"subject\\\":\\\"Mathematics\\\",\\\"qlevel\\\":\\\"EASY\\\",\\\"evalUnordered\\\":false,\\\"channel\\\":\\\"01272777697873100812\\\",\\\"language\\\":[\\\"English\\\"],\\\"medium\\\":\\\"English\\\",\\\"title\\\":\\\"Question\\\",\\\"type\\\":\\\"ftb\\\",\\\"editorState\\\":null,\\\"body\\\":\\\"{\\\\\\\"data\\\\\\\":{\\\\\\\"plugin\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"org.ekstep.questionunit.ftb\\\\\\\",\\\\\\\"version\\\\\\\":\\\\\\\"1.1\\\\\\\",\\\\\\\"templateId\\\\\\\":\\\\\\\"ftbtemplate\\\\\\\"},\\\\\\\"data\\\\\\\":{\\\\\\\"question\\\\\\\":{\\\\\\\"text\\\\\\\":\\\\\\\"<p>2+7=[[9]]</p>\\\\\\\\n\\\\\\\",\\\\\\\"image\\\\\\\":\\\\\\\"/assets/public/content/do_2132535370796236801776/artifact/do_2132535370796236801776_1617863414673_1200px-the_president_of_india_smt._pratibha_patil.jpg\\\\\\\",\\\\\\\"audio\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"audioName\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"keyboardConfig\\\\\\\":{\\\\\\\"keyboardType\\\\\\\":\\\\\\\"Device\\\\\\\",\\\\\\\"customKeys\\\\\\\":[]}},\\\\\\\"answer\\\\\\\":[\\\\\\\"9\\\\\\\"],\\\\\\\"media\\\\\\\":[{\\\\\\\"id\\\\\\\":\\\\\\\"org.ekstep.keyboard.eras_icon\\\\\\\",\\\\\\\"src\\\\\\\":\\\\\\\"/content-plugins/org.ekstep.keyboard-1.1/renderer/assets/eras_icon.png\\\\\\\",\\\\\\\"assetId\\\\\\\":\\\\\\\"org.ekstep.keyboard.eras_icon\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"image\\\\\\\",\\\\\\\"preload\\\\\\\":true},{\\\\\\\"id\\\\\\\":\\\\\\\"org.ekstep.keyboard.language_icon\\\\\\\",\\\\\\\"src\\\\\\\":\\\\\\\"/content-plugins/org.ekstep.keyboard-1.1/renderer/assets/language_icon.png\\\\\\\",\\\\\\\"assetId\\\\\\\":\\\\\\\"org.ekstep.keyboard.language_icon\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"image\\\\\\\",\\\\\\\"preload\\\\\\\":true},{\\\\\\\"id\\\\\\\":\\\\\\\"org.ekstep.keyboard.hide_keyboard\\\\\\\",\\\\\\\"src\\\\\\\":\\\\\\\"/content-plugins/org.ekstep.keyboard-1.1/renderer/assets/keyboard.svg\\\\\\\",\\\\\\\"assetId\\\\\\\":\\\\\\\"org.ekstep.keyboard.hide_keyboard\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"image\\\\\\\",\\\\\\\"preload\\\\\\\":true},{\\\\\\\"id\\\\\\\":965349255,\\\\\\\"src\\\\\\\":\\\\\\\"/assets/public/content/do_2132535370796236801776/artifact/do_2132535370796236801776_1617863414673_1200px-the_president_of_india_smt._pratibha_patil.jpg\\\\\\\",\\\\\\\"assetId\\\\\\\":\\\\\\\"do_2132535370796236801776\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"image\\\\\\\",\\\\\\\"preload\\\\\\\":false}]},\\\\\\\"config\\\\\\\":{\\\\\\\"metadata\\\\\\\":{\\\\\\\"max_score\\\\\\\":1,\\\\\\\"isShuffleOption\\\\\\\":false,\\\\\\\"isPartialScore\\\\\\\":true,\\\\\\\"evalUnordered\\\\\\\":false,\\\\\\\"templateType\\\\\\\":\\\\\\\"Horizontal\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Question\\\\\\\",\\\\\\\"title\\\\\\\":\\\\\\\"Question\\\\\\\",\\\\\\\"copyright\\\\\\\":\\\\\\\"diksha_ntptest_org\\\\\\\",\\\\\\\"board\\\\\\\":\\\\\\\"CBSE\\\\\\\",\\\\\\\"topic\\\\\\\":[],\\\\\\\"medium\\\\\\\":\\\\\\\"English\\\\\\\",\\\\\\\"gradeLevel\\\\\\\":[\\\\\\\"Class 1\\\\\\\"],\\\\\\\"subject\\\\\\\":\\\\\\\"Mathematics\\\\\\\",\\\\\\\"learningOutcome\\\\\\\":[\\\\\\\"हिन्दी के महीनों और अयोध्या की जानकारी प्राप्त करेंगे।\\\\\\\"],\\\\\\\"qlevel\\\\\\\":\\\\\\\"EASY\\\\\\\",\\\\\\\"category\\\\\\\":\\\\\\\"FTB\\\\\\\"},\\\\\\\"max_time\\\\\\\":0,\\\\\\\"max_score\\\\\\\":1,\\\\\\\"partial_scoring\\\\\\\":true,\\\\\\\"layout\\\\\\\":\\\\\\\"Horizontal\\\\\\\",\\\\\\\"isShuffleOption\\\\\\\":false,\\\\\\\"questionCount\\\\\\\":1,\\\\\\\"evalUnordered\\\\\\\":false},\\\\\\\"media\\\\\\\":[{\\\\\\\"id\\\\\\\":\\\\\\\"org.ekstep.keyboard.eras_icon\\\\\\\",\\\\\\\"src\\\\\\\":\\\\\\\"/content-plugins/org.ekstep.keyboard-1.1/renderer/assets/eras_icon.png\\\\\\\",\\\\\\\"assetId\\\\\\\":\\\\\\\"org.ekstep.keyboard.eras_icon\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"image\\\\\\\",\\\\\\\"preload\\\\\\\":true},{\\\\\\\"id\\\\\\\":\\\\\\\"org.ekstep.keyboard.language_icon\\\\\\\",\\\\\\\"src\\\\\\\":\\\\\\\"/content-plugins/org.ekstep.keyboard-1.1/renderer/assets/language_icon.png\\\\\\\",\\\\\\\"assetId\\\\\\\":\\\\\\\"org.ekstep.keyboard.language_icon\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"image\\\\\\\",\\\\\\\"preload\\\\\\\":true},{\\\\\\\"id\\\\\\\":\\\\\\\"org.ekstep.keyboard.hide_keyboard\\\\\\\",\\\\\\\"src\\\\\\\":\\\\\\\"/content-plugins/org.ekstep.keyboard-1.1/renderer/assets/keyboard.svg\\\\\\\",\\\\\\\"assetId\\\\\\\":\\\\\\\"org.ekstep.keyboard.hide_keyboard\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"image\\\\\\\",\\\\\\\"preload\\\\\\\":true},{\\\\\\\"id\\\\\\\":965349255,\\\\\\\"src\\\\\\\":\\\\\\\"/assets/public/content/do_2132535370796236801776/artifact/do_2132535370796236801776_1617863414673_1200px-the_president_of_india_smt._pratibha_patil.jpg\\\\\\\",\\\\\\\"assetId\\\\\\\":\\\\\\\"do_2132535370796236801776\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"image\\\\\\\",\\\\\\\"preload\\\\\\\":false}]}}\\\",\\\"createdOn\\\":\\\"2021-09-20T13:04:56.957+0000\\\",\\\"gradeLevel\\\":[\\\"Class 1\\\"],\\\"isShuffleOption\\\":false,\\\"appId\\\":\\\"staging.sunbird.portal\\\",\\\"lastUpdatedOn\\\":\\\"2021-09-20T13:04:56.957+0000\\\",\\\"identifier\\\":\\\"do_213370516250279936122\\\",\\\"lastStatusChangedOn\\\":\\\"2021-09-20T13:04:56.957+0000\\\",\\\"question\\\":null,\\\"consumerId\\\":\\\"cb069f8d-e4e1-46c5-831f-d4a83b323ada\\\",\\\"solutions\\\":null,\\\"learningOutcome\\\":[\\\"हिन्दी के महीनों और अयोध्या की जानकारी प्राप्त करेंगे।\\\"],\\\"version\\\":2,\\\"versionKey\\\":\\\"1632143096957\\\",\\\"framework\\\":\\\"ekstep_ncert_k-12\\\",\\\"answer\\\":[{\\\"answer\\\":true,\\\"value\\\":{\\\"type\\\":\\\"text\\\",\\\"asset\\\":\\\"1\\\"}}],\\\"createdBy\\\":\\\"0ced9624-e65b-4fd0-a0d3-2f6e86dd3ef7\\\",\\\"max_score\\\":1,\\\"name\\\":\\\"Question\\\",\\\"template_id\\\":\\\"NA\\\",\\\"category\\\":\\\"FTB\\\",\\\"board\\\":\\\"CBSE\\\",\\\"status\\\":\\\"Live\\\",\\\"isSelected\\\":true}]\"},\"config\":{\"__cdata\":\"{\\\"title\\\":\\\"Change\\\",\\\"max_score\\\":5,\\\"allow_skip\\\":true,\\\"show_feedback\\\":true,\\\"shuffle_questions\\\":true,\\\"shuffle_options\\\":false,\\\"total_items\\\":5,\\\"btn_edit\\\":\\\"Edit\\\"}\"},\"org.ekstep.question\":[{\"id\":\"do_213371887644123136110\",\"type\":\"mcq\",\"pluginId\":\"org.ekstep.questionunit.sequence\",\"pluginVer\":\"1.1\",\"templateId\":\"sequenceTemplate\",\"data\":{\"__cdata\":\"{\\\"question\\\":{\\\"text\\\":\\\"<p style='font-size:1.285em;'>Who is table topper of the IPL 2021?</p>\\\\n\\\",\\\"image\\\":\\\"\\\",\\\"audio\\\":\\\"\\\",\\\"audioName\\\":\\\"\\\",\\\"hint\\\":\\\"\\\"},\\\"options\\\":[{\\\"text\\\":\\\"DC\\\",\\\"image\\\":\\\"\\\",\\\"audio\\\":\\\"\\\",\\\"audioName\\\":\\\"\\\",\\\"hint\\\":\\\"\\\",\\\"$$hashKey\\\":\\\"object:1144\\\"},{\\\"text\\\":\\\"CSK\\\",\\\"image\\\":\\\"\\\",\\\"audio\\\":\\\"\\\",\\\"audioName\\\":\\\"\\\",\\\"hint\\\":\\\"\\\",\\\"$$hashKey\\\":\\\"object:1145\\\"},{\\\"text\\\":\\\"RCB\\\",\\\"image\\\":\\\"\\\",\\\"audio\\\":\\\"\\\",\\\"audioName\\\":\\\"\\\",\\\"hint\\\":\\\"\\\",\\\"$$hashKey\\\":\\\"object:1155\\\"},{\\\"text\\\":\\\"MI\\\",\\\"image\\\":\\\"\\\",\\\"audio\\\":\\\"\\\",\\\"audioName\\\":\\\"\\\",\\\"hint\\\":\\\"\\\",\\\"$$hashKey\\\":\\\"object:1160\\\"}],\\\"media\\\":[]}\"},\"config\":{\"__cdata\":\"{\\\"metadata\\\":{\\\"max_score\\\":1,\\\"isShuffleOption\\\":false,\\\"isPartialScore\\\":true,\\\"evalUnordered\\\":false,\\\"templateType\\\":\\\"Horizontal\\\",\\\"name\\\":\\\"Who is table topper of the IPL 2021?\\\\n\\\",\\\"title\\\":\\\"Who is table topper of the IPL 2021?\\\\n\\\",\\\"copyright\\\":\\\"Tamil Nadu\\\",\\\"board\\\":\\\"State (Tamil Nadu)\\\",\\\"topic\\\":[],\\\"medium\\\":\\\"English\\\",\\\"gradeLevel\\\":[\\\"Class 1\\\"],\\\"subject\\\":\\\"Skills\\\",\\\"qlevel\\\":\\\"MEDIUM\\\",\\\"category\\\":\\\"mcq\\\"},\\\"max_time\\\":0,\\\"max_score\\\":1,\\\"partial_scoring\\\":true,\\\"layout\\\":\\\"Horizontal\\\",\\\"isShuffleOption\\\":false,\\\"questionCount\\\":1,\\\"evalUnordered\\\":false}\"},\"w\":80,\"h\":85,\"x\":9,\"y\":6},{\"id\":\"do_21337173350796492819\",\"type\":\"mcq\",\"pluginId\":\"org.ekstep.questionunit.reorder\",\"pluginVer\":\"1.1\",\"templateId\":\"reorderingtemplate\",\"data\":{\"__cdata\":\"{\\\"question\\\":{\\\"text\\\":\\\"<p style='font-size:1.285em;'>tonight &nbsp;want &nbsp;to the cinema &nbsp;to go &nbsp;we</p>\\\\n\\\"},\\\"sentence\\\":{\\\"text\\\":\\\"we want to go to the cinema tonight\\\",\\\"tabs\\\":[{\\\"text\\\":\\\"we\\\",\\\"id\\\":0,\\\"$$hashKey\\\":\\\"object:2601\\\"},{\\\"text\\\":\\\"want\\\",\\\"id\\\":1,\\\"$$hashKey\\\":\\\"object:2602\\\"},{\\\"text\\\":\\\"to\\\",\\\"id\\\":2,\\\"$$hashKey\\\":\\\"object:2603\\\"},{\\\"text\\\":\\\"go\\\",\\\"id\\\":3,\\\"$$hashKey\\\":\\\"object:2604\\\"},{\\\"text\\\":\\\"to\\\",\\\"id\\\":4,\\\"$$hashKey\\\":\\\"object:2605\\\"},{\\\"text\\\":\\\"the\\\",\\\"id\\\":5,\\\"$$hashKey\\\":\\\"object:2606\\\"},{\\\"text\\\":\\\"cinema\\\",\\\"id\\\":6,\\\"$$hashKey\\\":\\\"object:2607\\\"},{\\\"text\\\":\\\"tonight\\\",\\\"id\\\":7,\\\"$$hashKey\\\":\\\"object:2608\\\"}]}}\"},\"config\":{\"__cdata\":\"{\\\"metadata\\\":{\\\"max_score\\\":3,\\\"isShuffleOption\\\":false,\\\"isPartialScore\\\":true,\\\"evalUnordered\\\":false,\\\"templateType\\\":\\\"Horizontal\\\",\\\"name\\\":\\\"tonight  want  to the cinema  to go  we\\\\n\\\",\\\"title\\\":\\\"tonight  want  to the cinema  to go  we\\\\n\\\",\\\"copyright\\\":\\\"Tamil Nadu\\\",\\\"board\\\":\\\"State (Tamil Nadu)\\\",\\\"topic\\\":[],\\\"medium\\\":\\\"English\\\",\\\"gradeLevel\\\":[\\\"Class 1\\\"],\\\"subject\\\":\\\"Skills\\\",\\\"qlevel\\\":\\\"EASY\\\",\\\"category\\\":\\\"mcq\\\"},\\\"max_time\\\":0,\\\"max_score\\\":1,\\\"partial_scoring\\\":true,\\\"layout\\\":\\\"Horizontal\\\",\\\"isShuffleOption\\\":false,\\\"questionCount\\\":1,\\\"evalUnordered\\\":false}\"},\"w\":80,\"h\":85,\"x\":9,\"y\":6},{\"id\":\"do_213371681179803648191\",\"type\":\"mcq\",\"pluginId\":\"org.ekstep.questionunit.mcq\",\"pluginVer\":\"1.3\",\"templateId\":\"horizontalMCQ\",\"data\":{\"__cdata\":\"{\\\"question\\\":{\\\"text\\\":\\\"<p style='font-size:1.285em;'>India</p>\\\\n\\\",\\\"image\\\":\\\"\\\",\\\"audio\\\":\\\"\\\",\\\"audioName\\\":\\\"\\\",\\\"hint\\\":\\\"\\\"},\\\"options\\\":[{\\\"text\\\":\\\"<p style='font-size:1.285em;'>240,200,160</p>\\\\n\\\",\\\"image\\\":\\\"\\\",\\\"audio\\\":\\\"\\\",\\\"audioName\\\":\\\"\\\",\\\"hint\\\":\\\"\\\",\\\"isCorrect\\\":true,\\\"$$hashKey\\\":\\\"object:639\\\"},{\\\"text\\\":\\\"<p style='font-size:1.285em;'>200,160,240</p>\\\\n\\\",\\\"image\\\":\\\"\\\",\\\"audio\\\":\\\"\\\",\\\"audioName\\\":\\\"\\\",\\\"hint\\\":\\\"\\\",\\\"isCorrect\\\":false,\\\"$$hashKey\\\":\\\"object:640\\\"}],\\\"questionCount\\\":0,\\\"media\\\":[]}\"},\"config\":{\"__cdata\":\"{\\\"metadata\\\":{\\\"data\\\":{\\\"plugin\\\":{\\\"id\\\":\\\"org.ekstep.questionunit.mcq\\\",\\\"version\\\":\\\"1.3\\\",\\\"templateId\\\":\\\"horizontalMCQ\\\"},\\\"data\\\":{\\\"question\\\":{\\\"text\\\":\\\"<p>India</p>\\\\n\\\",\\\"image\\\":\\\"\\\",\\\"audio\\\":\\\"\\\",\\\"audioName\\\":\\\"\\\",\\\"hint\\\":\\\"\\\"},\\\"options\\\":[{\\\"text\\\":\\\"<p>240,200,160</p>\\\\n\\\",\\\"image\\\":\\\"\\\",\\\"audio\\\":\\\"\\\",\\\"audioName\\\":\\\"\\\",\\\"hint\\\":\\\"\\\",\\\"isCorrect\\\":true,\\\"$$hashKey\\\":\\\"object:639\\\"},{\\\"text\\\":\\\"<p>200,160,240</p>\\\\n\\\",\\\"image\\\":\\\"\\\",\\\"audio\\\":\\\"\\\",\\\"audioName\\\":\\\"\\\",\\\"hint\\\":\\\"\\\",\\\"isCorrect\\\":false,\\\"$$hashKey\\\":\\\"object:640\\\"}],\\\"questionCount\\\":0,\\\"media\\\":[]},\\\"config\\\":{\\\"metadata\\\":{\\\"max_score\\\":1,\\\"isShuffleOption\\\":false,\\\"isPartialScore\\\":true,\\\"evalUnordered\\\":false,\\\"templateType\\\":\\\"Horizontal\\\",\\\"name\\\":\\\"Question\\\",\\\"title\\\":\\\"Copy of - Question\\\",\\\"copyright\\\":\\\"diksha_ntptest_org\\\",\\\"board\\\":\\\"CBSE\\\",\\\"topic\\\":[],\\\"medium\\\":\\\"English\\\",\\\"gradeLevel\\\":[\\\"Class 1\\\"],\\\"subject\\\":\\\"Mathematics\\\",\\\"learningOutcome\\\":[\\\"हिन्दी के महीनों और अयोध्या की जानकारी प्राप्त करेंगे।\\\"],\\\"qlevel\\\":\\\"EASY\\\",\\\"category\\\":\\\"MCQ\\\",\\\"level\\\":\\\"EASY\\\"},\\\"max_time\\\":0,\\\"max_score\\\":1,\\\"partial_scoring\\\":true,\\\"layout\\\":\\\"Horizontal\\\",\\\"isShuffleOption\\\":false,\\\"questionCount\\\":1,\\\"evalUnordered\\\":false},\\\"media\\\":[]},\\\"questionTitle\\\":\\\"Copy of - Question\\\",\\\"qlevel\\\":\\\"EASY\\\",\\\"board\\\":\\\"CBSE\\\",\\\"gradeLevel\\\":[\\\"Class 1\\\"],\\\"medium\\\":\\\"English\\\",\\\"subject\\\":\\\"Mathematics\\\",\\\"learningOutcome\\\":[\\\"हिन्दी के महीनों और अयोध्या की जानकारी प्राप्त करेंगे।\\\"],\\\"templateType\\\":\\\"Horizontal\\\",\\\"isPartialScore\\\":true,\\\"isShuffleOption\\\":false,\\\"evalUnordered\\\":false,\\\"topic\\\":[],\\\"max_score\\\":1,\\\"name\\\":\\\"copy question\\\",\\\"title\\\":\\\"copy question\\\",\\\"topicData\\\":\\\"(0) topics selected\\\",\\\"copyright\\\":\\\"diksha_ntptest_org\\\",\\\"category\\\":\\\"MCQ\\\"},\\\"max_time\\\":0,\\\"max_score\\\":1,\\\"partial_scoring\\\":true,\\\"layout\\\":\\\"Horizontal\\\",\\\"isShuffleOption\\\":false,\\\"questionCount\\\":1,\\\"evalUnordered\\\":false}\"},\"w\":80,\"h\":85,\"x\":9,\"y\":6},{\"id\":\"do_213371630118879232189\",\"type\":\"mtf\",\"pluginId\":\"org.ekstep.questionunit.mtf\",\"pluginVer\":\"1.2\",\"templateId\":\"horizontalMTF\",\"data\":{\"__cdata\":\"{\\\"question\\\":{\\\"text\\\":\\\"<p style='font-size:1.285em;'>Question</p>\\\\n\\\",\\\"image\\\":\\\"\\\",\\\"audio\\\":\\\"\\\",\\\"audioName\\\":\\\"\\\",\\\"hint\\\":\\\"\\\"},\\\"option\\\":{\\\"optionsLHS\\\":[{\\\"text\\\":\\\"<p>animal</p>\\\\n\\\",\\\"image\\\":\\\"\\\",\\\"audio\\\":\\\"\\\",\\\"audioName\\\":\\\"\\\",\\\"hint\\\":\\\"\\\",\\\"index\\\":1,\\\"$$hashKey\\\":\\\"object:639\\\"},{\\\"text\\\":\\\"<p>bird</p>\\\\n\\\",\\\"image\\\":\\\"\\\",\\\"audio\\\":\\\"\\\",\\\"audioName\\\":\\\"\\\",\\\"hint\\\":\\\"\\\",\\\"index\\\":2,\\\"$$hashKey\\\":\\\"object:640\\\"},{\\\"text\\\":\\\"<p>mammal</p>\\\\n\\\",\\\"image\\\":\\\"\\\",\\\"audio\\\":\\\"\\\",\\\"audioName\\\":\\\"\\\",\\\"hint\\\":\\\"\\\",\\\"index\\\":3,\\\"$$hashKey\\\":\\\"object:641\\\"}],\\\"optionsRHS\\\":[{\\\"text\\\":\\\"<p>dog</p>\\\\n\\\",\\\"image\\\":\\\"\\\",\\\"audio\\\":\\\"\\\",\\\"audioName\\\":\\\"\\\",\\\"hint\\\":\\\"\\\",\\\"mapIndex\\\":1},{\\\"text\\\":\\\"<p>peacock</p>\\\\n\\\",\\\"image\\\":\\\"\\\",\\\"audio\\\":\\\"\\\",\\\"audioName\\\":\\\"\\\",\\\"hint\\\":\\\"\\\",\\\"mapIndex\\\":2},{\\\"text\\\":\\\"<p>human</p>\\\\n\\\",\\\"image\\\":\\\"\\\",\\\"audio\\\":\\\"\\\",\\\"audioName\\\":\\\"\\\",\\\"hint\\\":\\\"\\\",\\\"mapIndex\\\":3}],\\\"questionCount\\\":0},\\\"media\\\":[]}\"},\"config\":{\"__cdata\":\"{\\\"metadata\\\":{\\\"max_score\\\":1,\\\"isShuffleOption\\\":false,\\\"isPartialScore\\\":true,\\\"evalUnordered\\\":false,\\\"templateType\\\":\\\"Horizontal\\\",\\\"name\\\":\\\"Question\\\",\\\"title\\\":\\\"Question\\\",\\\"copyright\\\":\\\"diksha_ntptest_org\\\",\\\"board\\\":\\\"CBSE\\\",\\\"topic\\\":[],\\\"medium\\\":\\\"English\\\",\\\"gradeLevel\\\":[\\\"Class 1\\\"],\\\"subject\\\":\\\"Mathematics\\\",\\\"learningOutcome\\\":[\\\"हिन्दी के महीनों और अयोध्या की जानकारी प्राप्त करेंगे।\\\"],\\\"qlevel\\\":\\\"EASY\\\",\\\"category\\\":\\\"MTF\\\"},\\\"max_time\\\":0,\\\"max_score\\\":1,\\\"partial_scoring\\\":true,\\\"layout\\\":\\\"Horizontal\\\",\\\"isShuffleOption\\\":false,\\\"questionCount\\\":1,\\\"evalUnordered\\\":false}\"},\"w\":80,\"h\":85,\"x\":9,\"y\":6},{\"id\":\"do_213370516250279936122\",\"type\":\"ftb\",\"pluginId\":\"org.ekstep.questionunit.ftb\",\"pluginVer\":\"1.1\",\"templateId\":\"ftbtemplate\",\"data\":{\"__cdata\":\"{\\\"question\\\":{\\\"text\\\":\\\"<p style='font-size:1.285em;'>2+7=[[9]]</p>\\\\n\\\",\\\"image\\\":\\\"/assets/public/content/do_2132535370796236801776/artifact/do_2132535370796236801776_1617863414673_1200px-the_president_of_india_smt._pratibha_patil.jpg\\\",\\\"audio\\\":\\\"\\\",\\\"audioName\\\":\\\"\\\",\\\"keyboardConfig\\\":{\\\"keyboardType\\\":\\\"Device\\\",\\\"customKeys\\\":[]}},\\\"answer\\\":[\\\"9\\\"],\\\"media\\\":[{\\\"id\\\":\\\"org.ekstep.keyboard.eras_icon\\\",\\\"src\\\":\\\"/content-plugins/org.ekstep.keyboard-1.1/renderer/assets/eras_icon.png\\\",\\\"assetId\\\":\\\"org.ekstep.keyboard.eras_icon\\\",\\\"type\\\":\\\"image\\\",\\\"preload\\\":true},{\\\"id\\\":\\\"org.ekstep.keyboard.language_icon\\\",\\\"src\\\":\\\"/content-plugins/org.ekstep.keyboard-1.1/renderer/assets/language_icon.png\\\",\\\"assetId\\\":\\\"org.ekstep.keyboard.language_icon\\\",\\\"type\\\":\\\"image\\\",\\\"preload\\\":true},{\\\"id\\\":\\\"org.ekstep.keyboard.hide_keyboard\\\",\\\"src\\\":\\\"/content-plugins/org.ekstep.keyboard-1.1/renderer/assets/keyboard.svg\\\",\\\"assetId\\\":\\\"org.ekstep.keyboard.hide_keyboard\\\",\\\"type\\\":\\\"image\\\",\\\"preload\\\":true},{\\\"id\\\":965349255,\\\"src\\\":\\\"/assets/public/content/do_2132535370796236801776/artifact/do_2132535370796236801776_1617863414673_1200px-the_president_of_india_smt._pratibha_patil.jpg\\\",\\\"assetId\\\":\\\"do_2132535370796236801776\\\",\\\"type\\\":\\\"image\\\",\\\"preload\\\":false}]}\"},\"config\":{\"__cdata\":\"{\\\"metadata\\\":{\\\"max_score\\\":1,\\\"isShuffleOption\\\":false,\\\"isPartialScore\\\":true,\\\"evalUnordered\\\":false,\\\"templateType\\\":\\\"Horizontal\\\",\\\"name\\\":\\\"Question\\\",\\\"title\\\":\\\"Question\\\",\\\"copyright\\\":\\\"diksha_ntptest_org\\\",\\\"board\\\":\\\"CBSE\\\",\\\"topic\\\":[],\\\"medium\\\":\\\"English\\\",\\\"gradeLevel\\\":[\\\"Class 1\\\"],\\\"subject\\\":\\\"Mathematics\\\",\\\"learningOutcome\\\":[\\\"हिन्दी के महीनों और अयोध्या की जानकारी प्राप्त करेंगे।\\\"],\\\"qlevel\\\":\\\"EASY\\\",\\\"category\\\":\\\"FTB\\\"},\\\"max_time\\\":0,\\\"max_score\\\":1,\\\"partial_scoring\\\":true,\\\"layout\\\":\\\"Horizontal\\\",\\\"isShuffleOption\\\":false,\\\"questionCount\\\":1,\\\"evalUnordered\\\":false}\"},\"w\":80,\"h\":85,\"x\":9,\"y\":6}]}]}],\"manifest\":{\"media\":[{\"id\":\"b6d6cd9a-a10c-4c15-90b1-c5aa4a321225\",\"plugin\":\"org.ekstep.navigation\",\"ver\":\"1.0\",\"src\":\"/content-plugins/org.ekstep.navigation-1.0/renderer/controller/navigation_ctrl.js\",\"type\":\"js\"},{\"id\":\"eee8ad52-ce4c-4c06-b508-e977b83e09d6\",\"plugin\":\"org.ekstep.navigation\",\"ver\":\"1.0\",\"src\":\"/content-plugins/org.ekstep.navigation-1.0/renderer/templates/navigation.html\",\"type\":\"js\"},{\"id\":\"org.ekstep.navigation\",\"plugin\":\"org.ekstep.navigation\",\"ver\":\"1.0\",\"src\":\"/content-plugins/org.ekstep.navigation-1.0/renderer/plugin.js\",\"type\":\"plugin\"},{\"id\":\"org.ekstep.navigation_manifest\",\"plugin\":\"org.ekstep.navigation\",\"ver\":\"1.0\",\"src\":\"/content-plugins/org.ekstep.navigation-1.0/manifest.json\",\"type\":\"json\"},{\"id\":\"org.ekstep.questionunit.renderer.audioicon\",\"plugin\":\"org.ekstep.questionunit\",\"ver\":\"1.2\",\"src\":\"/content-plugins/org.ekstep.questionunit-1.2/renderer/assets/audio-icon.png\",\"type\":\"image\"},{\"id\":\"org.ekstep.questionunit.renderer.downarrow\",\"plugin\":\"org.ekstep.questionunit\",\"ver\":\"1.2\",\"src\":\"/content-plugins/org.ekstep.questionunit-1.2/renderer/assets/down_arrow.png\",\"type\":\"image\"},{\"id\":\"org.ekstep.questionunit.renderer.zoom\",\"plugin\":\"org.ekstep.questionunit\",\"ver\":\"1.2\",\"src\":\"/content-plugins/org.ekstep.questionunit-1.2/renderer/assets/zoom.png\",\"type\":\"image\"},{\"id\":\"org.ekstep.questionunit.renderer.audio-icon1\",\"plugin\":\"org.ekstep.questionunit\",\"ver\":\"1.2\",\"src\":\"/content-plugins/org.ekstep.questionunit-1.2/renderer/assets/audio-icon1.png\",\"type\":\"image\"},{\"id\":\"7759b905-5a24-4a5a-9ca4-9496775bca20\",\"plugin\":\"org.ekstep.questionunit\",\"ver\":\"1.2\",\"src\":\"/content-plugins/org.ekstep.questionunit-1.2/renderer/components/js/components.js\",\"type\":\"js\"},{\"id\":\"58e1d3bc-ad33-4e8d-ab9c-dc0d8083bb8e\",\"plugin\":\"org.ekstep.questionunit\",\"ver\":\"1.2\",\"src\":\"/content-plugins/org.ekstep.questionunit-1.2/renderer/components/css/components.css\",\"type\":\"css\"},{\"id\":\"org.ekstep.questionunit\",\"plugin\":\"org.ekstep.questionunit\",\"ver\":\"1.2\",\"src\":\"/content-plugins/org.ekstep.questionunit-1.2/renderer/plugin.js\",\"type\":\"plugin\"},{\"id\":\"org.ekstep.questionunit_manifest\",\"plugin\":\"org.ekstep.questionunit\",\"ver\":\"1.2\",\"src\":\"/content-plugins/org.ekstep.questionunit-1.2/manifest.json\",\"type\":\"json\"},{\"id\":\"91c2c08e-6a0c-4aed-854e-d75508553538\",\"plugin\":\"org.ekstep.questionunit.sequence\",\"ver\":\"1.1\",\"src\":\"/content-plugins/org.ekstep.questionunit.sequence-1.1/renderer/styles/style.css\",\"type\":\"css\"},{\"id\":\"a0358949-6297-46c5-ae90-9eb42d99ba01\",\"plugin\":\"org.ekstep.questionunit.sequence\",\"ver\":\"1.1\",\"src\":\"/content-plugins/org.ekstep.questionunit.sequence-1.1/renderer/js/jquery-ui-drag-and-drop.min.js\",\"type\":\"js\"},{\"id\":\"b1012871-b176-48ce-96b0-170a08e48877\",\"plugin\":\"org.ekstep.questionunit.sequence\",\"ver\":\"1.1\",\"src\":\"/content-plugins/org.ekstep.questionunit.sequence-1.1/renderer/js/seq-template.js\",\"type\":\"js\"},{\"id\":\"org.ekstep.questionunit.sequence\",\"plugin\":\"org.ekstep.questionunit.sequence\",\"ver\":\"1.1\",\"src\":\"/content-plugins/org.ekstep.questionunit.sequence-1.1/renderer/plugin.js\",\"type\":\"plugin\"},{\"id\":\"org.ekstep.questionunit.sequence_manifest\",\"plugin\":\"org.ekstep.questionunit.sequence\",\"ver\":\"1.1\",\"src\":\"/content-plugins/org.ekstep.questionunit.sequence-1.1/manifest.json\",\"type\":\"json\"},{\"id\":\"org.ekstep.questionset.quiz\",\"plugin\":\"org.ekstep.questionset.quiz\",\"ver\":\"1.0\",\"src\":\"/content-plugins/org.ekstep.questionset.quiz-1.0/renderer/plugin.js\",\"type\":\"plugin\"},{\"id\":\"org.ekstep.questionset.quiz_manifest\",\"plugin\":\"org.ekstep.questionset.quiz\",\"ver\":\"1.0\",\"src\":\"/content-plugins/org.ekstep.questionset.quiz-1.0/manifest.json\",\"type\":\"json\"},{\"id\":\"org.ekstep.iterator\",\"plugin\":\"org.ekstep.iterator\",\"ver\":\"1.0\",\"src\":\"/content-plugins/org.ekstep.iterator-1.0/renderer/plugin.js\",\"type\":\"plugin\"},{\"id\":\"org.ekstep.iterator_manifest\",\"plugin\":\"org.ekstep.iterator\",\"ver\":\"1.0\",\"src\":\"/content-plugins/org.ekstep.iterator-1.0/manifest.json\",\"type\":\"json\"},{\"id\":\"4052e63a-dd43-4e23-b87a-470700ae7239\",\"plugin\":\"org.ekstep.questionset\",\"ver\":\"1.0\",\"src\":\"/content-plugins/org.ekstep.questionset-1.0/renderer/utils/telemetry_logger.js\",\"type\":\"js\"},{\"id\":\"cba51cdc-77c8-4b39-bca3-3473e6714bbb\",\"plugin\":\"org.ekstep.questionset\",\"ver\":\"1.0\",\"src\":\"/content-plugins/org.ekstep.questionset-1.0/renderer/utils/html_audio_plugin.js\",\"type\":\"js\"},{\"id\":\"60278a1e-70ce-4b9b-93a9-6559bc247d5e\",\"plugin\":\"org.ekstep.questionset\",\"ver\":\"1.0\",\"src\":\"/content-plugins/org.ekstep.questionset-1.0/renderer/utils/qs_feedback_popup.js\",\"type\":\"js\"},{\"id\":\"org.ekstep.questionset\",\"plugin\":\"org.ekstep.questionset\",\"ver\":\"1.0\",\"src\":\"/content-plugins/org.ekstep.questionset-1.0/renderer/plugin.js\",\"type\":\"plugin\"},{\"id\":\"org.ekstep.questionset_manifest\",\"plugin\":\"org.ekstep.questionset\",\"ver\":\"1.0\",\"src\":\"/content-plugins/org.ekstep.questionset-1.0/manifest.json\",\"type\":\"json\"},{\"id\":\"57a3cd39-5078-4116-8e49-d97ddc468b99\",\"plugin\":\"org.ekstep.questionunit.reorder\",\"ver\":\"1.1\",\"src\":\"/content-plugins/org.ekstep.questionunit.reorder-1.1/renderer/styles/style.css\",\"type\":\"css\"},{\"id\":\"83384441-2585-497e-90b3-321e39761725\",\"plugin\":\"org.ekstep.questionunit.reorder\",\"ver\":\"1.1\",\"src\":\"/content-plugins/org.ekstep.questionunit.reorder-1.1/renderer/reorderingcontroller.js\",\"type\":\"js\"},{\"id\":\"org.ekstep.questionunit.reorder.backspace.png\",\"plugin\":\"org.ekstep.questionunit.reorder\",\"ver\":\"1.1\",\"src\":\"/content-plugins/org.ekstep.questionunit.reorder-1.1/renderer/assets/backspace.png\",\"type\":\"image\"},{\"id\":\"org.ekstep.questionunit.reorder\",\"plugin\":\"org.ekstep.questionunit.reorder\",\"ver\":\"1.1\",\"src\":\"/content-plugins/org.ekstep.questionunit.reorder-1.1/renderer/plugin.js\",\"type\":\"plugin\"},{\"id\":\"org.ekstep.questionunit.reorder_manifest\",\"plugin\":\"org.ekstep.questionunit.reorder\",\"ver\":\"1.1\",\"src\":\"/content-plugins/org.ekstep.questionunit.reorder-1.1/manifest.json\",\"type\":\"json\"},{\"id\":\"d9a05424-c728-4d10-9050-455d370956d7\",\"plugin\":\"org.ekstep.questionunit.mcq\",\"ver\":\"1.3\",\"src\":\"/content-plugins/org.ekstep.questionunit.mcq-1.3/renderer/styles/style.css\",\"type\":\"css\"},{\"id\":\"9950e934-33a5-4a6a-bc62-77193ec86ddc\",\"plugin\":\"org.ekstep.questionunit.mcq\",\"ver\":\"1.3\",\"src\":\"/content-plugins/org.ekstep.questionunit.mcq-1.3/renderer/styles/horizontal_and_vertical.css\",\"type\":\"css\"},{\"id\":\"c1c3ac48-3d23-4b7c-9c1b-7303eaea9902\",\"plugin\":\"org.ekstep.questionunit.mcq\",\"ver\":\"1.3\",\"src\":\"/content-plugins/org.ekstep.questionunit.mcq-1.3/renderer/template/mcq-layouts.js\",\"type\":\"js\"},{\"id\":\"4e5582e0-8298-4be9-ac1e-2e973d974d97\",\"plugin\":\"org.ekstep.questionunit.mcq\",\"ver\":\"1.3\",\"src\":\"/content-plugins/org.ekstep.questionunit.mcq-1.3/renderer/template/template_controller.js\",\"type\":\"js\"},{\"id\":\"d36b40a7-e051-4bab-891a-acd3cb9d64e9\",\"plugin\":\"org.ekstep.questionunit.mcq\",\"ver\":\"1.3\",\"src\":\"/content-plugins/org.ekstep.questionunit.mcq-1.3/renderer/template/question-component.js\",\"type\":\"js\"},{\"id\":\"b49c0425-5347-41b8-852a-c4d6c9decc64\",\"plugin\":\"org.ekstep.questionunit.mcq\",\"ver\":\"1.3\",\"src\":\"/content-plugins/org.ekstep.questionunit.mcq-1.3/renderer/assets/tick_icon.png\",\"type\":\"image\"},{\"id\":\"36214e42-4580-49dc-a5d7-d5b0827bd669\",\"plugin\":\"org.ekstep.questionunit.mcq\",\"ver\":\"1.3\",\"src\":\"/content-plugins/org.ekstep.questionunit.mcq-1.3/renderer/assets/audio-icon2.png\",\"type\":\"image\"},{\"id\":\"22172b3c-e279-458a-89a8-e0779a21ba95\",\"plugin\":\"org.ekstep.questionunit.mcq\",\"ver\":\"1.3\",\"src\":\"/content-plugins/org.ekstep.questionunit.mcq-1.3/renderer/assets/music-blue.png\",\"type\":\"image\"},{\"id\":\"org.ekstep.questionunit.mcq\",\"plugin\":\"org.ekstep.questionunit.mcq\",\"ver\":\"1.3\",\"src\":\"/content-plugins/org.ekstep.questionunit.mcq-1.3/renderer/plugin.js\",\"type\":\"plugin\"},{\"id\":\"org.ekstep.questionunit.mcq_manifest\",\"plugin\":\"org.ekstep.questionunit.mcq\",\"ver\":\"1.3\",\"src\":\"/content-plugins/org.ekstep.questionunit.mcq-1.3/manifest.json\",\"type\":\"json\"},{\"id\":\"35d8c47b-5327-444a-85c3-0a23621bc01d\",\"plugin\":\"org.ekstep.questionunit.mtf\",\"ver\":\"1.2\",\"src\":\"/content-plugins/org.ekstep.questionunit.mtf-1.2/renderer/styles/style.css\",\"type\":\"css\"},{\"id\":\"7c953154-de22-43da-825d-5a8051e1b1ea\",\"plugin\":\"org.ekstep.questionunit.mtf\",\"ver\":\"1.2\",\"src\":\"/content-plugins/org.ekstep.questionunit.mtf-1.2/renderer/styles/style.css\",\"type\":\"css\"},{\"id\":\"5de24b8e-b553-40d2-913e-e271830000da\",\"plugin\":\"org.ekstep.questionunit.mtf\",\"ver\":\"1.2\",\"src\":\"/content-plugins/org.ekstep.questionunit.mtf-1.2/renderer/util/evaluator.js\",\"type\":\"js\"},{\"id\":\"962016b4-a733-46ca-82a2-d92e90951e09\",\"plugin\":\"org.ekstep.questionunit.mtf\",\"ver\":\"1.2\",\"src\":\"/content-plugins/org.ekstep.questionunit.mtf-1.2/renderer/js/jquery-ui.min.js\",\"type\":\"js\"},{\"id\":\"43d68a72-490a-47b3-b282-bae3bd358454\",\"plugin\":\"org.ekstep.questionunit.mtf\",\"ver\":\"1.2\",\"src\":\"/content-plugins/org.ekstep.questionunit.mtf-1.2/renderer/js/mtftemplate.js\",\"type\":\"js\"},{\"id\":\"org.ekstep.questionunit.mtf.shape1.png\",\"plugin\":\"org.ekstep.questionunit.mtf\",\"ver\":\"1.2\",\"src\":\"/content-plugins/org.ekstep.questionunit.mtf-1.2/renderer/assets/shape1.png\",\"type\":\"image\"},{\"id\":\"org.ekstep.questionunit.mtf.shape2.png\",\"plugin\":\"org.ekstep.questionunit.mtf\",\"ver\":\"1.2\",\"src\":\"/content-plugins/org.ekstep.questionunit.mtf-1.2/renderer/assets/shape2.png\",\"type\":\"image\"},{\"id\":\"org.ekstep.questionunit.mtf.shape3.png\",\"plugin\":\"org.ekstep.questionunit.mtf\",\"ver\":\"1.2\",\"src\":\"/content-plugins/org.ekstep.questionunit.mtf-1.2/renderer/assets/shape3.png\",\"type\":\"image\"},{\"id\":\"org.ekstep.questionunit.mtf.shape4.png\",\"plugin\":\"org.ekstep.questionunit.mtf\",\"ver\":\"1.2\",\"src\":\"/content-plugins/org.ekstep.questionunit.mtf-1.2/renderer/assets/shape4.png\",\"type\":\"image\"},{\"id\":\"org.ekstep.questionunit.mtf.audio1.png\",\"plugin\":\"org.ekstep.questionunit.mtf\",\"ver\":\"1.2\",\"src\":\"/content-plugins/org.ekstep.questionunit.mtf-1.2/renderer/assets/audio1.png\",\"type\":\"image\"},{\"id\":\"org.ekstep.questionunit.mtf.audio2.png\",\"plugin\":\"org.ekstep.questionunit.mtf\",\"ver\":\"1.2\",\"src\":\"/content-plugins/org.ekstep.questionunit.mtf-1.2/renderer/assets/audio2.png\",\"type\":\"image\"},{\"id\":\"org.ekstep.questionunit.mtf.audio3.png\",\"plugin\":\"org.ekstep.questionunit.mtf\",\"ver\":\"1.2\",\"src\":\"/content-plugins/org.ekstep.questionunit.mtf-1.2/renderer/assets/audio3.png\",\"type\":\"image\"},{\"id\":\"org.ekstep.questionunit.mtf\",\"plugin\":\"org.ekstep.questionunit.mtf\",\"ver\":\"1.2\",\"src\":\"/content-plugins/org.ekstep.questionunit.mtf-1.2/renderer/plugin.js\",\"type\":\"plugin\"},{\"id\":\"org.ekstep.questionunit.mtf_manifest\",\"plugin\":\"org.ekstep.questionunit.mtf\",\"ver\":\"1.2\",\"src\":\"/content-plugins/org.ekstep.questionunit.mtf-1.2/manifest.json\",\"type\":\"json\"},{\"id\":\"ba236279-8a1c-487b-848b-c11b2b96d2c5\",\"plugin\":\"org.ekstep.keyboard\",\"ver\":\"1.1\",\"src\":\"/content-plugins/org.ekstep.keyboard-1.1/renderer/keyboard.js\",\"type\":\"js\"},{\"id\":\"19bb0887-acb0-4a12-9e7b-37349ed47c46\",\"plugin\":\"org.ekstep.keyboard\",\"ver\":\"1.1\",\"src\":\"/content-plugins/org.ekstep.keyboard-1.1/renderer/style/style.css\",\"type\":\"css\"},{\"id\":\"org.ekstep.keyboard\",\"plugin\":\"org.ekstep.keyboard\",\"ver\":\"1.1\",\"src\":\"/content-plugins/org.ekstep.keyboard-1.1/renderer/plugin.js\",\"type\":\"plugin\"},{\"id\":\"org.ekstep.keyboard_manifest\",\"plugin\":\"org.ekstep.keyboard\",\"ver\":\"1.1\",\"src\":\"/content-plugins/org.ekstep.keyboard-1.1/manifest.json\",\"type\":\"json\"},{\"id\":\"24d22aae-a9b6-49e9-95a0-1c999198bb91\",\"plugin\":\"org.ekstep.questionunit.ftb\",\"ver\":\"1.1\",\"src\":\"/content-plugins/org.ekstep.questionunit.ftb-1.1/renderer/styles/style.css\",\"type\":\"css\"},{\"id\":\"b78ec203-358e-41e8-b088-abb53337d52d\",\"plugin\":\"org.ekstep.questionunit.ftb\",\"ver\":\"1.1\",\"src\":\"/content-plugins/org.ekstep.questionunit.ftb-1.1/renderer/ftbcontroller.js\",\"type\":\"js\"},{\"id\":\"org.ekstep.questionunit.ftb.audioblue\",\"plugin\":\"org.ekstep.questionunit.ftb\",\"ver\":\"1.1\",\"src\":\"/content-plugins/org.ekstep.questionunit.ftb-1.1//renderer/assets/audio-blue.png\",\"type\":\"image\"},{\"id\":\"org.ekstep.questionunit.ftb\",\"plugin\":\"org.ekstep.questionunit.ftb\",\"ver\":\"1.1\",\"src\":\"/content-plugins/org.ekstep.questionunit.ftb-1.1/renderer/plugin.js\",\"type\":\"plugin\"},{\"id\":\"org.ekstep.questionunit.ftb_manifest\",\"plugin\":\"org.ekstep.questionunit.ftb\",\"ver\":\"1.1\",\"src\":\"/content-plugins/org.ekstep.questionunit.ftb-1.1/manifest.json\",\"type\":\"json\"},{\"id\":965349255,\"src\":\"/assets/public/content/do_2132535370796236801776/artifact/do_2132535370796236801776_1617863414673_1200px-the_president_of_india_smt._pratibha_patil.jpg\",\"assetId\":\"do_2132535370796236801776\",\"type\":\"image\",\"preload\":false},{\"id\":\"QuizImage\",\"src\":\"/content-plugins/org.ekstep.questionset-1.0/editor/assets/quizimage.png\",\"assetId\":\"QuizImage\",\"type\":\"image\",\"preload\":true},{\"id\":\"org.ekstep.keyboard.eras_icon\",\"src\":\"/content-plugins/org.ekstep.keyboard-1.1/renderer/assets/eras_icon.png\",\"assetId\":\"org.ekstep.keyboard.eras_icon\",\"type\":\"image\",\"preload\":true},{\"id\":\"org.ekstep.keyboard.language_icon\",\"src\":\"/content-plugins/org.ekstep.keyboard-1.1/renderer/assets/language_icon.png\",\"assetId\":\"org.ekstep.keyboard.language_icon\",\"type\":\"image\",\"preload\":true},{\"id\":\"org.ekstep.keyboard.hide_keyboard\",\"src\":\"/content-plugins/org.ekstep.keyboard-1.1/renderer/assets/keyboard.svg\",\"assetId\":\"org.ekstep.keyboard.hide_keyboard\",\"type\":\"image\",\"preload\":true}]},\"plugin-manifest\":{\"plugin\":[{\"id\":\"org.ekstep.navigation\",\"ver\":\"1.0\",\"type\":\"plugin\",\"depends\":\"\"},{\"id\":\"org.ekstep.questionunit\",\"ver\":\"1.2\",\"type\":\"plugin\",\"depends\":\"\"},{\"id\":\"org.ekstep.questionunit.sequence\",\"ver\":\"1.1\",\"type\":\"plugin\",\"depends\":\"org.ekstep.questionunit\"},{\"id\":\"org.ekstep.questionset.quiz\",\"ver\":\"1.0\",\"type\":\"plugin\",\"depends\":\"\"},{\"id\":\"org.ekstep.iterator\",\"ver\":\"1.0\",\"type\":\"plugin\",\"depends\":\"\"},{\"id\":\"org.ekstep.questionset\",\"ver\":\"1.0\",\"type\":\"plugin\",\"depends\":\"org.ekstep.questionset.quiz,org.ekstep.iterator\"},{\"id\":\"org.ekstep.questionunit.reorder\",\"ver\":\"1.1\",\"type\":\"plugin\",\"depends\":\"org.ekstep.questionunit\"},{\"id\":\"org.ekstep.questionunit.mcq\",\"ver\":\"1.3\",\"type\":\"plugin\",\"depends\":\"org.ekstep.questionunit\"},{\"id\":\"org.ekstep.questionunit.mtf\",\"ver\":\"1.2\",\"type\":\"plugin\",\"depends\":\"org.ekstep.questionunit\"},{\"id\":\"org.ekstep.keyboard\",\"ver\":\"1.1\",\"type\":\"plugin\",\"depends\":\"\"},{\"id\":\"org.ekstep.questionunit.ftb\",\"ver\":\"1.1\",\"type\":\"plugin\",\"depends\":\"org.ekstep.questionunit,org.ekstep.keyboard\"}]},\"compatibilityVersion\":2}"
}
```

### **Offline play**

You can play the ECML content offline by passing the *path* and *isAvailable* property as a device storage location

Sample config to play ECML content offline

```
{
    "identifier": "org.ekstep.customeval",
    "mimeType": "application/vnd.ekstep.ecml-archive",
    "contentData": {
        "appIcon": "fixture-stories/custom_eval/logo.png",
        "identifier": "org.ekstep.customeval"
    },
    "isAvailable": true,
    "path": "**../custom_eval"
}
```

### Quiz

Please refer [Quiz documentations](/learn/product-and-developer-guide/player/v1/players/ecml-player-v1/quiz) page.

### Audio

You can add audio in ecml assets and that can be render in ecml player v1. Currently mp3 type audio is supporting in ecml type contents. Content player v1 provides the ability to mute and unmute this audio.

![](/files/lDae0WhUGIOUIWhs8dGD)

### Shape

Ecml player v1 is capable to render the shape and which is created in [Interactive editor](/use/installation-guide/editors/interactive-editor)

![](/files/SwfnQU7zhZvsnf3w9XuJ)

### Video

You can add the mp4 and youtube files in the slides of ECML assets and that can be render in the ECML player v1. Streaming video also supports in this player.

![](/files/FOSjJDVv5cXLnjzwAwki)

### Navigation

User can navigate from one slide to another in this player. Ecml renderer provides the enhance capability to navigate. This player also supports the custom navigation.

For more information please refer [navigation section](/learn/product-and-developer-guide/player/v1/content-player-v1#navigate) of content player v1

### Read along

Content player v1 supports read the text with the help of read along plugin. Please refer [read along](/learn/product-and-developer-guide/editors/editor/features/content-editor#adding-text) text in developer documentations


# Quiz

[Interactive editor](/use/installation-guide/editors/interactive-editor) is responsible to creation of assessment assets. Content player v1 is capable to play the assessment type asset which is written in [Ekstep content markup language](/learn/product-and-developer-guide/player/v1/players/ecml-player-v1)

## Types of quiz

* [MCQ](#mcq)
* [MTF](#mtf)
* [FTB](#ftb)
* [Reordering words](#reordering-words)
* [Arrange in Sequence](#arrange-in-sequence)

There are following types of assessment can be taken in [ECML player v1](/learn/product-and-developer-guide/player/v1/players/ecml-player-v1).

### MCQ

Using v1 player you can render the Multiple choice Question type assets. In this type of questions user has to select the correct options.

To create the MCQ type questions, please refer [interactive editor](/learn/product-and-developer-guide/editors/editor/features#mcq) MCQ feature section.

&#x20;As image showing bellow, you can create the same MCQ question with different types of layouts.

![](/files/tmcLMmRhzNx5MWvYdTEb)

### MTF

MTF is the short form of 'Match the following' questions. v1 player is capable to play the MTF type quiz. This capability provide user to drag and drop the options within a canvas area and also provide the capability to calculate the partial score.

To create the MTF type questions, please refer [interactive editor MTF](/learn/product-and-developer-guide/editors/editor/features#mtf) feature section.

### FTB&#x20;

FTB is stands for 'Fill in the blank' type questions. In this type of question v1 player is capable to show the partial score if some of the answer is correct.

To create the FTB type questions, please refer [interactive editor FTB ](/learn/product-and-developer-guide/editors/editor/features#ftb)feature section.

![](/files/lVJ5o9lk72cd9GpS9nTH)

### Reordering words

This type of questions provide user the capability to drag and drop the options within a canvas area to order and reorder the words&#x20;

To create the Reordering words type questions, please refer [interactive editor reordering words ](/learn/product-and-developer-guide/editors/editor/features#reordering-words)feature section.

![](/files/Jbe0rafvIZYHb1Amp66D)

### Arrange in Sequence

In a content player v1 you can render the arrange in sequence type questions.

To create the Arrange in Sequence type questions, please refer [interactive editor Arrange in Sequence](/learn/product-and-developer-guide/editors/editor/features#arrange-in-sequence) feature section.

![](/files/xwWIvP9CFrR6C2PK9oj6)

## Configurations

### Editor

Please refer [Configuring Questions](/learn/product-and-developer-guide/editors/editor/features/adding-question-set#configuring-questions) section in sunbird developer documents to configure the quiz from editor side.

### Player

Content player v1 is capable to renderer all above mentioned and this can be configure by using the following configuration.

<details>

<summary><strong>Question Minimum Font Size</strong></summary>

What should be the the minimum font size can be render in content player v1 defines by the *questionMinFontSize* property.

```
{
    questionMinFontSize: '1.285em'
}
```

####

</details>

<details>

<summary>Show submit</summary>

Show submit property present the show button on end page, which will show after attempting the assessment. This is a configurable property of [overlay config](/learn/product-and-developer-guide/player/v1/content-player-v1#overlay) of content player v1.

<img src="/files/1Ldqx1DRcOLsFggBedKJ" alt="" data-size="original">

Sample config to show submit button.

```
overlay: {
    showSubmit: false
}
```

</details>

### Quiz

Please refer [Compiling Question Set](/learn/product-and-developer-guide/editors/editor/features/adding-question-set#compiling-question-set) section in sunbird developer documents to configure the quiz.

The following things can be configure to render the quiz.

<details>

<summary>Show Immediate Feedback</summary>

After every question rendered, the ECML player v1 will show the following immediate feedback popup.

#### Correct answer

If the answer is correct, evaluation popup will show the correct icon popup and next button to go to the next question

<img src="/files/nzIudgo8AjQPfiTAe89l" alt="" data-size="original">

#### Wrong answer

If the answer is wrong, evaluation popup will show the wrong icon popup with next and try again button.

<img src="/files/adfTRmeM6I0meR13swbp" alt="" data-size="original">

#### Partial score

The partial score can be calculate for [MTF](#mtf) and [FTB](#ftb) type questions

<img src="/files/gSBuKAdtOQbo7tTPnUbz" alt="" data-size="original">

</details>

<details>

<summary>Display</summary>

This takes the reference to show the number of question in one question set.

</details>

<details>

<summary>Shuffle Questions</summary>

By using this option you can shuffle the questions while rendering the quiz. So that, the random questions will come at the time of the attempting the question set.&#x20;

</details>

<details>

<summary>Max Score</summary>

If we have the 10 questions in one question set and we set the Max score the property 10, the max score will divide into the 10 questions.

</details>

## End Page

After rendering the quiz, the content player v1 is capable to show the final score on the end page of the asset. Please refer [end page section](/learn/product-and-developer-guide/player/v1/content-player-v1#end-page) for more information.


# Create Content

Click on the image. It expands in a pop-up window. Place your cursor on the expanded image and move or scroll your mouse to zoom-in further.\
To return to the normal view, click on the image again, or click anywhere outside the pop-up window, or press the **Esc** key.

<figure><img src="/files/M2Xd2V6b4IlTqBAyom7y" alt=""><figcaption></figcaption></figure>




---

[Next Page](/llms-full.txt/1)

