En 1937 George Stibitz, percibió que los relés electromecánicos, que eran los componentes básicos de todos los sistemas de conmutación telefónica de la época, también podrían ser utilizados en otras finalidades. Él percibió que los relés podían realizar operaciones en secuencia y así realizar cálculos matemáticos. Así, usando relés, lámparas de linterna y una llave hecha con una caja de metal de cigarros él montó el primer ordenador con relés: un sonido binario.

 

Figura 1 - George Stibitz con su suma binaria (binary adder)
Figura 1 - George Stibitz con su suma binaria (binary adder)

 

En 1939 con S. B. Willians, George construyó el Complex Number Calculator, el primer ordenador digital eléctrico del mundo. Esta computadora tenía una "CPU" formada por 450 relés telefónicos y 10 relés llamados crossbar, que eran relés multi-polos x multi-posiciones, podía encontrar el cociente de dos números de 10 dígitos en "sólo" 30 segundos. La entrada de la computadora era hecha por tres tele-máquinas de escribir. Lo que Stibitz no sabía es que al mismo tiempo que trabajaba en este ordenador en Berlín, Konrad Zuse construía una máquina similar y también los investigadores japoneses ya habían hecho su computadora con relé en la misma época.

Pero el mayor hecho de ese inventor fue llevar una de las máquinas que utilizaba para entrar con los datos en el ordenador a un encuentro de la American Mathematical Association en Dartmouth, New Hampshire y usarla para comunicarse a través de líneas telefónicas con el Complex Number Calculator en Nueva York. Fue la primera demostración del mundo de lo que denomina hoy Computación Remota.

El ordenador de Stibitz pasó a ser llamado de Model 1 Relay Computer, permaneciendo en operación hasta 1949.

 

Figura 2 - Un operador trabaja en el equipo Modelo I. Foto de AT & T.
Figura 2 - Un operador trabaja en el equipo Modelo I. Foto de AT & T.

 

Un hecho interesante es que el Complex Number Computer no era programable. Una combinación de relés controlaba de forma continua la secuencia de operaciones. El concepto de programación apareció sólo después en las computadoras de Bell.

El éxito del Complex Number Computer alentó a Stibitz a construir máquinas más ambiciosas, incluyendo el concepto de cinta perforada. Así, con la entrada de Estados Unidos en la Segunda Gran Guerra en 1941, Bell pasó a tener sus actividades concentrada en proyectos militares.

El primer ordenador usando relés para uso militar fue el Relay Interpolator, instalado en Washington y que contenía 440 relés y una capacidad de memoria para 7 números. ¡Esta computadora hacía una multiplicación en apenas 4 segundos! Su principal utilidad era computar tablas de direccionamiento para fuego antiaéreo.

Dos otros ordenadores fueron diseñados después, el Ballistic Computer y el detector de errores Mark 22, el primero en 1944 y el segundo en 1945. Contiene 1400 relés y una capacidad de memoria para 10 números. Su propósito era todavía realizar cálculos de direccionamiento de fuego antiaéreo.

Los mayores ordenadores de la serie, sin embargo, fueron construidos en 1946 y 1947, pesando cada uno 10 toneladas y conteniendo cerca de 9 mil relés. Estas máquinas, ya podían ser consideradas verdaderas computadoras, pues poseían dos unidades aritméticas separadas cada cual capaz de funcionar como un ordenador separado con sus registros de memoria y dispositivos de entrada y salida. Ya estaba presente el concepto de "procesamiento paralelo", pues cada uno resolvía parte del problema para luego los resultados ser procesados.

 

18.958MBMemory Usage47.67msRequest Duration
Joomla! Version5.2.3
PHP Version8.3.16
Identityguest
Response200
Templatecassiopeia
Database
Server
mysql
Version
10.5.22-MariaDB
Collation
latin1_swedish_ci
Conn Collation
utf8mb4_general_ci
$_GET
[]
$_POST
[]
$_SESSION
array:1 [ "joomla" => "***redacted***" ]
$_COOKIE
array:1 [ "c2123392c06423339225f3431360b7e6" => "ms2g25h098be5qa44m5kqmiq67" ]
$_SERVER
array:52 [ "USER" => "apache" "HOME" => "/usr/share/httpd" "SCRIPT_NAME" => "/index.php" "RE...
session
array:3 [ "counter" => 2 "timer" => array:3 [ "start" => 1741942407 "last" => 1741942407...
registry
array:3 [ "data" => [] "initialized" => false "separator" => "." ]
user
array:21 [ "id" => 0 "name" => null "username" => null "email" => null "password" => "***r...
  • afterLoad (85.86KB) (318μs)
  • afterInitialise (1.14MB) (3.57ms)
  • afterRoute (179.16KB) (848μs)
  • beforeRenderComponent com_content (100.65KB) (421μs)
  • Before Access::preloadComponents (all components) (33.5KB) (187μs)
  • After Access::preloadComponents (all components) (107.06KB) (381μs)
  • Before Access::preloadPermissions (com_content) (1.57KB) (7μs)
  • After Access::preloadPermissions (com_content) (16.19MB) (23.29ms)
  • Before Access::getAssetRules (id:8 name:com_content) (480.16KB) (2.15ms)
  • After Access::getAssetRules (id:8 name:com_content) (7.36KB) (41μs)
  • afterRenderComponent com_content (416.14KB) (6.79ms)
  • afterDispatch (2.25KB) (69μs)
  • beforeRenderRawModule mod_articles_category (Banco de Circuitos) (423.23KB) (2.42ms)
  • afterRenderRawModule mod_articles_category (Banco de Circuitos) (15.43KB) (437μs)
  • beforeRenderRawModule mod_finder (Busca_inteligente) (5.9KB) (120μs)
  • afterRenderRawModule mod_finder (Busca_inteligente) (63.1KB) (1.41ms)
  • beforeRenderModule mod_articles_category (Banco de Circuitos) (10.1KB) (697μs)
  • afterRenderModule mod_articles_category (Banco de Circuitos) (5.39KB) (87μs)
  • beforeRenderModule mod_finder (Busca_inteligente) (6.39KB) (234μs)
  • afterRenderModule mod_finder (Busca_inteligente) (4.44KB) (56μs)
  • afterRender (296.8KB) (3.99ms)
  • 1 x After Access::preloadPermissions (com_content) (16.19MB) (48.85%)
    23.29ms
    1 x afterRenderComponent com_content (416.14KB) (14.24%)
    6.79ms
    1 x afterRender (296.8KB) (8.38%)
    3.99ms
    1 x afterInitialise (1.14MB) (7.49%)
    3.57ms
    1 x beforeRenderRawModule mod_articles_category (Banco de Circuitos) (423.23KB) (5.09%)
    2.42ms
    1 x Before Access::getAssetRules (id:8 name:com_content) (480.16KB) (4.51%)
    2.15ms
    1 x afterRenderRawModule mod_finder (Busca_inteligente) (63.1KB) (2.97%)
    1.41ms
    1 x afterRoute (179.16KB) (1.78%)
    848μs
    1 x beforeRenderModule mod_articles_category (Banco de Circuitos) (10.1KB) (1.46%)
    697μs
    1 x afterRenderRawModule mod_articles_category (Banco de Circuitos) (15.43KB) (0.92%)
    437μs
    1 x beforeRenderComponent com_content (100.65KB) (0.88%)
    421μs
    1 x After Access::preloadComponents (all components) (107.06KB) (0.8%)
    381μs
    1 x afterLoad (85.86KB) (0.67%)
    318μs
    1 x beforeRenderModule mod_finder (Busca_inteligente) (6.39KB) (0.49%)
    234μs
    1 x Before Access::preloadComponents (all components) (33.5KB) (0.39%)
    187μs
    1 x beforeRenderRawModule mod_finder (Busca_inteligente) (5.9KB) (0.25%)
    120μs
    1 x afterRenderModule mod_articles_category (Banco de Circuitos) (5.39KB) (0.18%)
    87μs
    1 x afterDispatch (2.25KB) (0.15%)
    69μs
    1 x afterRenderModule mod_finder (Busca_inteligente) (4.44KB) (0.12%)
    56μs
    1 x After Access::getAssetRules (id:8 name:com_content) (7.36KB) (0.09%)
    41μs
    1 x Before Access::preloadPermissions (com_content) (1.57KB) (0.01%)
    7μs
23 statements were executed, 5 of which were duplicates, 18 unique11.09ms1.57MB
  • SELECT @@SESSION.sql_mode;32μs968B/libraries/src/Session/MetadataManager.php:184Copy
  • SELECT `session_id` FROM `incbmx_session` WHERE `session_id` = :session_id LIMIT 164μs1.31KBParams/libraries/src/Session/MetadataManager.php:187Copy
  • UPDATE `incbmx_session` SET `guest` = :guest , `time` = :time , `userid` = :user_id , `username` = :username , `client_id` = :client_id WHERE `session_id` = :session_id160μs992BParams/libraries/src/Session/MetadataManager.php:316Copy
  • SELECT `id`,`rules` FROM `incbmx_viewlevels`49μs608B/libraries/src/Access/Access.php:955Copy
  • SELECT `b`.`id` FROM `incbmx_usergroups` AS `a` LEFT JOIN `incbmx_usergroups` AS `b` ON `b`.`lft` <= `a`.`lft` AND `b`.`rgt` >= `a`.`rgt` WHERE `a`.`id` = :guest70μs1.64KBParams/libraries/src/Access/Access.php:868Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `incbmx_categories` AS `s` INNER JOIN `incbmx_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`229μs20.2KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `id`,`name`,`rules`,`parent_id` FROM `incbmx_assets` WHERE `name` IN (:preparedArray1,:preparedArray2,:preparedArray3,:preparedArray4,:preparedArray5,:preparedArray6,:preparedArray7,:preparedArray8,:preparedArray9,:preparedArray10,:preparedArray11,:preparedArray12,:preparedArray13,:preparedArray14,:preparedArray15,:preparedArray16,:preparedArray17,:preparedArray18,:preparedArray19,:preparedArray20,:preparedArray21,:preparedArray22,:preparedArray23,:preparedArray24,:preparedArray25,:preparedArray26,:preparedArray27,:preparedArray28,:preparedArray29,:preparedArray30,:preparedArray31,:preparedArray32,:preparedArray33,:preparedArray34,:preparedArray35,:preparedArray36,:preparedArray37,:preparedArray38,:preparedArray39)225μs7.44KBParams/libraries/src/Access/Access.php:357Copy
  • SELECT `id`,`name`,`rules`,`parent_id` FROM `incbmx_assets` WHERE `name` LIKE :asset OR `name` = :extension OR `parent_id` = 07.44ms1.46MBParams/libraries/src/Access/Access.php:301Copy
  • SHOW FULL COLUMNS FROM `incbmx_assets`299μs2.02KB/libraries/vendor/joomla/database/src/Mysqli/MysqliDriver.php:587Copy
  • SELECT * FROM `incbmx_assets` WHERE `name` = 'com_content.article.2545'81μs912B/libraries/src/Table/Table.php:780Copy
  • SHOW FULL COLUMNS FROM `incbmx_content`271μs1.77KB/libraries/vendor/joomla/database/src/Mysqli/MysqliDriver.php:587Copy
  • UPDATE `incbmx_content` SET `hits` = (`hits` + 1) WHERE `id` = '2545'158μs48B/libraries/src/Table/Table.php:1348Copy
  • SELECT `a`.`id`,`a`.`asset_id`,`a`.`title`,`a`.`alias`,`a`.`introtext`,`a`.`fulltext`,`a`.`state`,`a`.`catid`,`a`.`created`,`a`.`created_by`,`a`.`created_by_alias`,`a`.`modified`,`a`.`modified_by`,`a`.`checked_out`,`a`.`checked_out_time`,`a`.`publish_up`,`a`.`publish_down`,`a`.`images`,`a`.`urls`,`a`.`attribs`,`a`.`version`,`a`.`ordering`,`a`.`metakey`,`a`.`metadesc`,`a`.`access`,`a`.`hits`,`a`.`metadata`,`a`.`featured`,`a`.`language`,`fp`.`featured_up`,`fp`.`featured_down`,`c`.`title` AS `category_title`,`c`.`alias` AS `category_alias`,`c`.`access` AS `category_access`,`c`.`language` AS `category_language`,`fp`.`ordering`,`u`.`name` AS `author`,`parent`.`title` AS `parent_title`,`parent`.`id` AS `parent_id`,`parent`.`path` AS `parent_route`,`parent`.`alias` AS `parent_alias`,`parent`.`language` AS `parent_language`,ROUND(`v`.`rating_sum` / `v`.`rating_count`, 1) AS `rating`,`v`.`rating_count` AS `rating_count` FROM `incbmx_content` AS `a` INNER JOIN `incbmx_categories` AS `c` ON `c`.`id` = `a`.`catid` LEFT JOIN `incbmx_content_frontpage` AS `fp` ON `fp`.`content_id` = `a`.`id` LEFT JOIN `incbmx_users` AS `u` ON `u`.`id` = `a`.`created_by` LEFT JOIN `incbmx_categories` AS `parent` ON `parent`.`id` = `c`.`parent_id` LEFT JOIN `incbmx_content_rating` AS `v` ON `a`.`id` = `v`.`content_id` WHERE ( (`a`.`id` = :pk AND `c`.`published` > 0) AND (`a`.`publish_up` IS NULL OR `a`.`publish_up` <= :publishUp)) AND (`a`.`publish_down` IS NULL OR `a`.`publish_down` >= :publishDown) AND `a`.`state` IN (:preparedArray1,:preparedArray2)190μs22.13KBParams/components/com_content/src/Model/ArticleModel.php:215Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `incbmx_categories` AS `s` INNER JOIN `incbmx_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`access` IN (:preparedArray1,:preparedArray2) AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`196μs3.92KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `m`.`tag_id`,`t`.* FROM `incbmx_contentitem_tag_map` AS `m` INNER JOIN `incbmx_tags` AS `t` ON `m`.`tag_id` = `t`.`id` WHERE `m`.`type_alias` = :contentType AND `m`.`content_item_id` = :id AND `t`.`published` = 1 AND `t`.`access` IN (:preparedArray1,:preparedArray2)244μs3.97KBParams/libraries/src/Helper/TagsHelper.php:388Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `incbmx_categories` AS `s` INNER JOIN `incbmx_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`access` IN (:preparedArray1,:preparedArray2) AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`178μs3.92KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT DISTINCT a.id, a.title, a.name, a.checked_out, a.checked_out_time, a.note, a.state, a.access, a.created_time, a.created_user_id, a.ordering, a.language, a.fieldparams, a.params, a.type, a.default_value, a.context, a.group_id, a.label, a.description, a.required, a.only_use_in_subform,l.title AS language_title, l.image AS language_image,uc.name AS editor,ag.title AS access_level,ua.name AS author_name,g.title AS group_title, g.access as group_access, g.state AS group_state, g.note as group_note FROM incbmx_fields AS a LEFT JOIN `incbmx_languages` AS l ON l.lang_code = a.language LEFT JOIN incbmx_users AS uc ON uc.id=a.checked_out LEFT JOIN incbmx_viewlevels AS ag ON ag.id = a.access LEFT JOIN incbmx_users AS ua ON ua.id = a.created_user_id LEFT JOIN incbmx_fields_groups AS g ON g.id = a.group_id LEFT JOIN `incbmx_fields_categories` AS fc ON fc.field_id = a.id WHERE ( (`a`.`context` = :context AND (`fc`.`category_id` IS NULL OR `fc`.`category_id` IN (:preparedArray1,:preparedArray2,:preparedArray3)) AND `a`.`access` IN (:preparedArray4,:preparedArray5)) AND (`a`.`group_id` = 0 OR `g`.`access` IN (:preparedArray6,:preparedArray7)) AND `a`.`state` = :state) AND (`a`.`group_id` = 0 OR `g`.`state` = :gstate) AND `a`.`only_use_in_subform` = :only_use_in_subform ORDER BY a.ordering ASC392μs6.06KBParams/libraries/src/MVC/Model/BaseDatabaseModel.php:164Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `incbmx_categories` AS `s` INNER JOIN `incbmx_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`access` IN (:preparedArray1,:preparedArray2) AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`180μs3.92KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `name`,`element` FROM `incbmx_extensions` WHERE `type` = 'plugin' AND `folder` = 'finder' AND `enabled` = 1171μs656B/administrator/components/com_finder/src/Helper/LanguageHelper.php:135Copy
  • SELECT `title` FROM `incbmx_finder_taxonomy` WHERE `parent_id` = 1 AND `state` = 1 AND `access` IN (1,5)107μs648B/administrator/components/com_finder/src/Indexer/Taxonomy.php:325Copy
  • SELECT * FROM `incbmx_schemaorg` WHERE `itemId` = :itemId AND `context` = :context65μs1.55KBParams/plugins/system/schemaorg/src/Extension/Schemaorg.php:403Copy
  • SELECT `a`.`id`,`a`.`asset_id`,`a`.`title`,`a`.`alias`,`a`.`introtext`,`a`.`fulltext`,`a`.`state`,`a`.`catid`,`a`.`created`,`a`.`created_by`,`a`.`created_by_alias`,`a`.`modified`,`a`.`modified_by`,`a`.`checked_out`,`a`.`checked_out_time`,`a`.`publish_up`,`a`.`publish_down`,`a`.`images`,`a`.`urls`,`a`.`attribs`,`a`.`version`,`a`.`ordering`,`a`.`metakey`,`a`.`metadesc`,`a`.`access`,`a`.`hits`,`a`.`metadata`,`a`.`featured`,`a`.`language`,`fp`.`featured_up`,`fp`.`featured_down`,`c`.`title` AS `category_title`,`c`.`alias` AS `category_alias`,`c`.`access` AS `category_access`,`c`.`language` AS `category_language`,`fp`.`ordering`,`u`.`name` AS `author`,`parent`.`title` AS `parent_title`,`parent`.`id` AS `parent_id`,`parent`.`path` AS `parent_route`,`parent`.`alias` AS `parent_alias`,`parent`.`language` AS `parent_language`,ROUND(`v`.`rating_sum` / `v`.`rating_count`, 1) AS `rating`,`v`.`rating_count` AS `rating_count` FROM `incbmx_content` AS `a` INNER JOIN `incbmx_categories` AS `c` ON `c`.`id` = `a`.`catid` LEFT JOIN `incbmx_content_frontpage` AS `fp` ON `fp`.`content_id` = `a`.`id` LEFT JOIN `incbmx_users` AS `u` ON `u`.`id` = `a`.`created_by` LEFT JOIN `incbmx_categories` AS `parent` ON `parent`.`id` = `c`.`parent_id` LEFT JOIN `incbmx_content_rating` AS `v` ON `a`.`id` = `v`.`content_id` WHERE ( (`a`.`id` = :pk AND `c`.`published` > 0) AND (`a`.`publish_up` IS NULL OR `a`.`publish_up` <= :publishUp)) AND (`a`.`publish_down` IS NULL OR `a`.`publish_down` >= :publishDown) AND `a`.`state` IN (:preparedArray1,:preparedArray2)205μs22.17KBParams/components/com_content/src/Model/ArticleModel.php:215Copy
  • SELECT SUM(CASE WHEN `a`.`next_execution` <= :now THEN 1 ELSE 0 END) AS due_count,SUM(CASE WHEN `a`.`locked` IS NULL THEN 0 ELSE 1 END) AS locked_count FROM `incbmx_scheduler_tasks` AS `a` WHERE `a`.`state` = 183μs1.37KBParams/administrator/components/com_scheduler/src/Model/TasksModel.php:465Copy
  • warningassets - No asset found for com_content.article.2545, falling back to com_content
  • warningassets - No asset found for com_content.article.2545, falling back to com_content
  • warningassets - No asset found for com_content.article.2545, falling back to com_content
  • warningassets - No asset found for com_content.article.2545, falling back to com_content
  • warningassets - No asset found for com_content.article.2545, falling back to com_content
  • warningassets - No asset found for com_content.article.2545, falling back to com_content
  • warningassets - No asset found for com_content.article.2545, falling back to com_content
  • warningassets - No asset found for com_content.article.2545, falling back to com_content
  • warningassets - No asset found for com_content.article.2545, falling back to com_content
  • warningassets - No asset found for com_content.article.2545, falling back to com_content